我正在做C编程的入门课程,我们刚刚开始定义宏。如果 cond 为false,我应该定义打印 msg (字符串)的宏 CHECK ,但是,它不打印对标准信息流的 msg , cond 是真还是假。有什么想法吗?
1 #define CHECK(cond, msg) if(!cond) fprintf(stdout, "%s", msg)
答案 0 :(得分:7)
您应该像这样包装类似函数的宏:
#define CHECK(cond, msg) \
do { \
if (!(cond)) { \
fprintf(stdout, "%s", msg); \
} \
} while (0)
答案 1 :(得分:0)
尝试将其包装在{}:
中 #define CHECK(cond, msg) {if(!cond) fprintf(stdout, "%s", msg)}
另外,确保你真的不要从' 1'
开始