读书人

各个编译器的预加工机制有什么不同

发布时间: 2013-07-08 14:13:00 作者: rapoo

各个编译器的预处理机制有什么不同


#define CONVERSION(i) i.0f
......
float a[3];
a[0]=0; a[1]=0; a[2]=CONVERSION(1);

这是个示例,因为前面那个#define也是用宏控制的,在另一个版本下,这个宏起到转换整数常量的作用

这代码在VS2008里正常通过,但在cygwin里就出错,报expected ";" before numeric constant

按说宏只是替换CONVERSION(1)不就替换成1.0f么 怎么会错 应该是预处理机制不标准吧
标准语言规范是怎样预处理的 应该是我理解的这样吧 不会错的吧
[解决办法]
#define CONVERSION(i) i##.0f
[解决办法]
编译选项加/EP /P,重新编译,查看宏展开后对应的.i文件。

读书人网 >C语言

热点推荐