Visual Studio 2010中是否有编译器设置以确保可移植C++的编写?

Ric*_*ich 8 c++ portability compiler-errors visual-studio-2010 visual-studio

我从使用Visual Studio 2010编译的开发人员那里收到C++源代码,然后我需要在各种不同的编译器下重新编译:GCC,LLVM,其他版本的Visual Studio等.有时候他发送给我的代码(编译时没有编译) VS2010中的警告无法在其他编译器下编译.

他可以在VS2010中设置任何编译器设置,以增加他的代码可以轻松移植的可能性吗?

Adr*_*thy 3

在语言层面,没有灵丹妙药。您能做的最好的事情就是尽可能严格遵守语言标准。如果您利用特定于特定编译器的扩展(使用 Visual C++,/Za将禁用非标准语言扩展),大多数编译器都可以选择发出警告或错误。但这并不完美,因为还没有编译器完全实现 100% 的标准,因此即使使用严格兼容的代码,您仍然可能遇到可移植性问题。

另请注意,许多日常代码实际上利用了扩展或未定义或编译器定义的行为,通常没有意识到,因此以完全符合标准的模式进行编译可能不切实际。

您还必须了解标准允许不同的事情。例如,像 int 这样的类型在不同的系统上可能有不同的大小。Windows 是 LLP64,而大多数 Unix 衍生操作系统是 LP64。

在系统级别,我不知道有什么完美的方法可以确保程序员不依赖于特定于系统的东西(例如,<windows.h><pthreads.h>)。

最好的选择是让所有开发人员能够轻松地在所有目标平台上运行测试构建。