2012-11-18 201 views
2

如何确保我的代码与设置为最严格级别的每个gcc编译器兼容?是否有任何测试仪工具或我需要手动测试它?谢谢C代码兼容性

+1

没有办法完全确定(特别是因为有些未定义的行为在编译时几乎不可能检测到),但使用'-ansi -pedantic -Wall -Wextra'可能是一个好的开始。 –

+0

谢谢。我尝试了一下,刚开始时,我没有几个警告,但是-ansi有大约15个非常奇怪的错误/警告。几次它说有没有使用的变量(当然这是使用的),一些解析错误和一些其他警告。我应该担心吗?我没有在代码中看到任何解析错误或未使用的变量,所以我不明白为什么会出现如此多的错误 – user10099

+1

'-ansi'意味着C89(颤抖),因此,例如,您不能混合声明和代码,你不能使用'''注释,你有“隐式int”和隐式函数声明。 '-std = c99 -Wall -Watra -pedantic-errors'是一个很好的组合,IMO。 –

回答

0

每一个gcc编译器都很简单,只需要使用一个旧的编译器,并且它肯定会与新编译器一起编译。

如果你想让它与任何编译器一起编译,它会更难一点。建议您可以使用-ansi开关来禁用gcc扩展。

+0

或'-std = c99'使用较新的ISO/ANSI标准('-ansi'相当于'-std = c89') –