2014-12-05 2 views
-3

이 지시문은 코드의 일부이며 작동합니다. 그러나 나는 그들의 구문을 이해하지 못합니다. 나는 단지 "\"는 그 코드가 다음 행을 계속한다는 것을 압니다. 아무도 나를 도울 수 있습니까? 왜 ";"가 있는지. "ADDPOPUPMENU"는 무엇을 의미하며 왜 대문자입니까?지시문 구문의 의미는 무엇입니까?

#define ADDPOPUPMENU(hmenu, string) \ 
HMENU hSubMenu = CreatePopupMenu(); \ 
AppendMenu(hmenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, string); 
// Add a menu item 
#define ADDMENUITEM(hmenu, ID, string) \ 
AppendMenu(hSubMenu, MF_STRING, ID, string); 
+0

그것은 * 선 * 연속이다, 행 없습니다. 그리고 전체 매크로를 한 줄로 만듭니다. –

+0

'ADDPOPUPMENU'는 매크로 이름입니다. 대문자 인 이유는 무엇입니까? –

+2

";" 매크로를 정의하는 사람이 매크로 확장에서 ";"을 포함하기를 원했기 때문입니다. 매크로를 정의하는 사람이 매크로 이름을 대. 자로 지정하기 때.에 이름 "ADDPOPUPMENU"는 대. 자입니다. – hvd

답변

0

코드는 두 개의 매크로를 정의한다 :

#define ADDPOPUPMENU(hmenu, string) \ 
HMENU hSubMenu = CreatePopupMenu(); \ 
AppendMenu(hmenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, string); 

// Add a menu item 
#define ADDMENUITEM(hmenu, ID, string) \ 
AppendMenu(hSubMenu, MF_STRING, ID, string); 

이 처리기 #define 문은 단순히 텍스트 대체를 정의하고 있습니다. 이 같은 코드 :

ADDPOPUPMENU(MyMenu, "Name") 
ADDMENUITEM(MyMenu, MyID, "Item") 

은 컴파일 단계가 시작되기 전에 전처리 단계에서 다음과 같이 대체 할 것인가가 :

HMENU hSubMenu = CreatePopupMenu(); 
AppendMenu(MyMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "Name"); 
AppendMenu(hSubMenu, MF_STRING, MyID, "Item"); 
관련 문제