
xlc++ 和 g++
AIX上使用的是xlc++编译器,Linux上使用的是g++编译器。
对C标准中没有严格定义的行为,两个编译器的处理方式不一定相同,代码在两个平台运行会有不一样的表现。导致在一个平台运行正常,另一个平台可能就是bug了。
问题集中在以下几个方面
| 危险代码示例 | xlc++编译器 | g++编译器 | 处理方法 |
|---|---|---|---|
| s=”12” sprintf( r,”%04s”,s ); |
s不足四位左侧补’0’ r=”0012” |
s不足四位左侧补空字符’ ‘ r=” 12” |
增加检查代码 char p= r; for (; p == ‘ |

本文探讨了AIX系统上的xlc++编译器与Linux系统上的g++编译器在处理C语言标准未严格定义行为时的不同,指出这可能导致代码在不同平台上的运行差异。尤其是在32位和64位系统之间,变量长度的变化是主要关注点。

1208

被折叠的 条评论
为什么被折叠?



