使MSVC编译器GCC兼容?

jma*_*erx 2 c c++ compiler-construction gcc visual-studio

有没有办法使msvc编译器像gcc一样严格?MSVC让我做一些非常疯狂的事情,当我在linux中编译时会导致数百个错误.

谢谢

Nat*_*nst 5

一个更好的问题是:MSVC,g ++或任何其他编译器标准是否兼容,如果符合,是否符合相同的标准版本?您不应该依赖一组共同的非标准行为.就个人而言,我负责在g ++ 4.1.x和VC7.1上编译的超过500KLOC的C++.两个编译器都可以提供很多东西.

两个编译器都有语言或库扩展.g ++往往更好地将库扩展放在一个单独的命名空间中.VC,至少是旧版本,不太好.两者都具有默认启用的语言扩展,或者可以使用编译器开关启用(或禁用).您最好禁用所有语言扩展程序.

您可以设置的每个编译器的警告级别越高越好 - 并且不会在没有正当理由的情况下忽略任何编译器的警告.

对于Windows,默认情况下我使用以下选项:/W3 /wd4355 /wd4805 /wd4710.我想使用/W4,但第三方库使这个级别难以忍受.对于g ++,我使用-Wall -Wextra.我也想使用-Wold-style-cast,但我依赖太多违反这个的第三方库.

每个编译器都会警告不同的结构,或者以不同的方式警告它们.你最好注意两个编译器的输出,并在它们之间找到产生零警告的代码子集,尽可能高的警告级别.