2014-12-05 73 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

這是* *線延續,不排。它使整個宏成爲一條線。 – 2014-12-05 11:55:20

+0

'ADDPOPUPMENU'是宏名,爲什麼要大寫,聳聳肩...... – 2014-12-05 11:55:40

+2

有一個「;」因爲定義宏的人希望宏擴展包含「;」。名稱「ADDPOPUPMENU」是大寫,因爲定義宏的人希望宏名大寫。 – hvd 2014-12-05 11:55:50

回答

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");