【问题标题】:Are there compiler settings in Visual Studio 2010 to ensure the writing of portable C++?Visual Studio 2010 中是否有编译器设置来确保编写可移植的 C++?
【发布时间】:2013-03-15 15:43:15
【问题描述】:

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

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

【问题讨论】:

标签: c++ visual-studio-2010 visual-studio compiler-errors portability


【解决方案1】:

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

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

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

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

最好的办法是让所有开发人员都能轻松地在所有目标平台上运行测试版本。

【讨论】:

    猜你喜欢
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多