#define
指令將 標識符 定義爲宏,即指示編譯器將其後出現的所有標識符都替換爲替換列表,而它也可以被進一步處理。若該標識符已被定義爲任何類型的宏,則除非這些定義都相同,否則程序非良構,比如:
#ifndef INCLUDE_ //一般用於防止inlcude的時候重複定義聲明類型
#define INCLUDE_
// 做一些聲明之類的,
#endif
當然也會定義一些宏去代替一些複雜的方法,語法很簡單:
#define identifier token-string(可選)
#define identifier ( identifier, ... , identifier) token-string(可選)
那麼在#define中的一些特殊字符代表什麼意思呢?
1. # 字符串化, 例如:
#define LogMessage(a) printf("The message is: %s", #a);
LogMessage(WARNING) //The message is:WARNING
string ppp="abcdef";
LogMessage(ppp) //The message is: ppp; not "abcdef"
2. ## 符號連接操作 例如:
#define Sum_Number(b) Num##b
#define Num9 999
Sum_Number(9) //999
3. #@ 字符化,例如:
#define TEST(tp,charactor) \
{ \
char a[100]{0};\
sprintf_s("%s,%c", #tp, #@charactor); \
TRACE(a); \
}
TEST(WARNING, C); //輸出,WARNING, C