C/C++宏定义
1.TRACE宏
2.
1 #define delete_log(fmt, args...) \
2 Log("FILE:%s FUNCTION:%s LINE:<%d>\n"fmt, __FILE__, __FUNCTION__, __LINE__, ##args)
2 Log("FILE:%s FUNCTION:%s LINE:<%d>\n"fmt, __FILE__, __FUNCTION__, __LINE__, ##args)
2.
1 struct dlt_choice
2 {
3 const char *name;
4 const char *description;
5 int dlt;
6 };
7
8 #define DLT_CHOICE(code, description) { #code, description, code }
9 #define DLT_CHOICE_SENTINEL { NULL, NULL, 0 }
10
11 DLT_CHOICE(DLT_NULL, "BSD loopback"),//经过gcc -E test.c编译后,实际上的内容为:
12 {"DLT_NULL", "BSD loopback", DLT_NULL}
13
2 {
3 const char *name;
4 const char *description;
5 int dlt;
6 };
7
8 #define DLT_CHOICE(code, description) { #code, description, code }
9 #define DLT_CHOICE_SENTINEL { NULL, NULL, 0 }
10
11 DLT_CHOICE(DLT_NULL, "BSD loopback"),//经过gcc -E test.c编译后,实际上的内容为:
12 {"DLT_NULL", "BSD loopback", DLT_NULL}
13
可见,#code的#的用处是将紧跟其后的内容扩展成字符串
posted on 2008-01-16 15:55 kevin.Tian 阅读(387) 评论(0) 编辑 收藏 举报