【发布时间】:2009-05-08 20:29:35
【问题描述】:
我正在查看http://www0.us.ioccc.org/1988/westley.c 中的程序,在another SO answer 中提到 - 它应该打印 pi 的值,大约 3.142,但是当我编译并运行它时,我得到了0.250。看起来当 GCC 预处理器(测试的 4.1.2 和 3.4.6)在代码上运行时,它会转换
#define _ -F<00||--F-OO--;
_-_-_
到
-F<00||--F-OO--;- -F<00||--F-OO--;- -F<00||--F-OO--;
但我认为,要让程序正常运行,它应该是
-F<00||--F-OO--;--F<00||--F-OO--;--F<00||--F-OO--;
即GCC 在“宏”扩展之前插入了一个额外的空间。这是#define 应该工作的方式吗? (自 1988 年以来这种情况发生了变化吗?)
编辑:另外,任何有关如何防止这些空间出现的信息都将不胜感激。
【问题讨论】:
标签: c gcc macros whitespace c-preprocessor