我想定义一个类似于宏的函数,例如:
也就是说,
我认为 C 预处理器应该正确处理这个问题,因为在编译时,它知道
#define foo(x)\
#if x>32\
x\
#else\
(2*x)\
#endif
也就是说,
if x>32, then foo(x) present x
else, foo(x) present (2*x)
但我的GCC报错了:
int a = foo(31);
我认为 C 预处理器应该正确处理这个问题,因为在编译时,它知道
x=33
。它可以将 foo(33)
替换为 (2*33)
。
#define foo(x)
这种构造存在,因为它只会帮助您编写可能仅仅凭借偶然性能够正常工作的代码。 - msw