간만에 프로그램에 손대고 있는데, 함정에 빠져버렸다 -_- ;;;
if ( nTest ) ListView_SetItemText(hListView,~); else ListView_SetItemText(hListView,~);
|
[ 문제의 구문 ]
위와 같이 적어주면
error C2181: if와 짝을 이루지 않는 잘못된 else문입니다. |
신나는 문구를 띄워주신다.
제일 먼저 ListView_SetItemText 매크로는 매크로란 점이다 -_- ;
https://msdn.microsoft.com/en-us/library/windows/desktop/bb775105(v=vs.85).aspx
을 보면 알겠지만, 매크로지만 함수와 같이 완벽히 작동하는거처럼 보여주신다.
( 위 MSDN 에도 매크로 뒤에 세미콜론이 붙어있다. )
하지만, 매크로는 매크로일 뿐 . . .
#define ListView_SetItemText(hwndLV, i, iSubItem_, pszText_) \
|
위 매크로를 보면 { } 저주받을 중괄호가 존재한다.
이 매크로를 따라 맨 처음 구문을 다시 적어보면
if ( nTest ) { LV_ITEM _macro_lvi;\ else { LV_ITEM _macro_lvi;\
|
대충 이와 같이 적용된다.
if 문의 중괄호 끝에 아름답게 빨간색으로 빛나는 세미콜론이 보이신다.
즉, if ( ~ ){ }; 으로 이미 if문이 끝나버린 상태에서 else 문이 선언되어 앞에 있는 if 문이 인식을 못하는 부분이다.
따라서, 매크로를 사용시엔 반드시 if, while, for 와 같은 구문에는 중괄호 안에 매크로를 적거나
if, while, for 가 아닌 구문에만 사용하거나, 적당히 경우를 봐서 세미콜론을 안붙히는게 방법일 수 있겠다.
결론적으로 그냥 닥치는데로 중괄호 붙히는게 답일 듯 하다.
gotoxy in windows python (0) | 2015.08.30 |
---|---|
네○파라 vol.0 암호화 루틴 (0) | 2015.08.20 |
IE UTF-8 인코딩과 encodeURIComponent 의 이야기. (2) | 2015.05.25 |
미연시계의 횡포. 2***AME (0) | 2015.05.08 |
엔스크립트에 대해서 잠깐 분석해봄. (0) | 2015.05.01 |
|
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |