首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-07-08 
各个编译器的预处理机制有什么不同#define CONVERSION(i) i.0f......float a[3]a[0]0 a[1]0 a[2]CON

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


#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文件。

热点排行