如下定义LOG宏:
#include#define DBG_LOG printf int main(int argc, char *argv[]) { int x = 9; DBG_LOG("x=%d\n", x=(x>56:4)); printf("x=%d\n", x); return 0; }
想在某模块中取消LOG宏:
#include#define DBG_LOG printf #undef DBG_LOG #define DBG_LOG int main(int argc, char *argv[]) { int x = 9; DBG_LOG("x=%d\n", x=(x>56:4)); printf("x=%d\n", x);//x == 6, 说明上面的宏参数列表仍被执行 return 0; }
防止#undef的宏参数列表被执行的方法:
#include#define DBG_LOG(...) printf(__VA_ARGS__) #undef DBG_LOG #define DBG_LOG(...) //printf(__VA_ARGS__) int main(int argc, char *argv[]) { int x = 9; DBG_LOG("x=%d\n", x=(x>56:4)); printf("x=%d\n", x);//x == 9 return 0; }