#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