我正在查看http://www0.us.ioccc.org/1988/westley.c上的程序,在另一个 SO 答案中提到- 它应该打印 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 年以来情况发生了变化吗?)
编辑:此外,任何有关如何防止这些空间出现的信息都将不胜感激。