Visual Studio 2010中有编译器设置来确保编写可移植的c++吗?

Are there compiler settings in Visual Studio 2010 to ensure the writing of portable C++?

本文关键字:可移植 c++ 确保 2010 Studio 设置 编译器 Visual      更新时间:2023-10-16

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

是否有任何编译器设置,他可以在VS2010中设置,以增加他的代码将是干净的可移植的可能性?

在语言层面,没有什么灵丹妙药。你能做的最好的事情就是尽可能地坚持语言标准。如果您利用特定于特定编译器的扩展,大多数编译器都有发出警告或错误的选项(对于Visual c++, /Za将禁用非标准语言扩展)。但这并不完美,因为还没有编译器实现绝对100%的标准,所以即使是严格符合标准的代码,也可能存在可移植性问题。

还要注意,许多日常代码实际上利用了扩展或未定义的或编译器定义的行为,通常没有意识到这一点,因此在完全符合标准的模式下编译可能是不实际的。

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

在系统层面,我不知道一个完美的方法来确保程序员不依赖于特定于系统的东西(例如,<windows.h><pthreads.h>)。

最好的办法是让所有开发人员都能在所有目标平台上运行测试构建。