【发布时间】:2018-10-27 20:38:42
【问题描述】:
我正在尝试定义一个有两个行/语句的宏,就像:
#define FLUSH_PRINTF(x) printf(x);fflush(stdout);
但由于 C 宏不能与 ';' 一起使用的限制,它不能工作。
有什么合理的解决方法吗?
PS:我知道上面的例子很奇怪,我应该使用类似普通函数的东西。但这只是一个简单的例子,我想问一下如何定义一个多重语句宏。
【问题讨论】:
-
but it can't works due to the limit that C Macro can not work with ';'.什么意思?为什么不写一个函数呢? -
如果您确实想这样做:
#define FLUSH_PRINTF(x) {printf(x); fflush(stdout);} -
不应该避免 fflush 吗?
-
@KamiKaze:
fflush非常适合输出流——一般来说,它是输入流的 UB(尽管在某些平台上受支持)。
标签: c linux unix macros c-preprocessor