【发布时间】:2011-06-04 04:46:42
【问题描述】:
为什么下面的代码没有按预期工作?
void foobar(int);
#ifndef foobar
printf("foobar exists");
#endif
它总是打印消息;它显然无法检测到函数作为实体的存在。 (是不是过载问题?)
为什么#ifdef(或其变体)不能检测函数声明?声明应该在预处理时可用,所以它应该工作,不是吗?如果没有,是否有替代方案或解决方法?
【问题讨论】:
-
问题中有错字吗?除非您还有#define foobar 或-Dfoobar,否则我希望它永远不会打印消息。
-
是的,应该是
#ifndef(我在复制测试代码时忘记更新那行)。
标签: c c-preprocessor declaration