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 = |