【问题标题】:How can I test the portability of a C++ codebase developed and managed in Visual Studio 2010?如何测试在 Visual Studio 2010 中开发和管理的 C++ 代码库的可移植性?
【发布时间】:2013-05-23 13:30:09
【问题描述】:

我有一个非常大且非常老的 C++ 项目,目前在 Visual Studio 2010 中维护。我们团队的一位成员刚刚测试了升级到 VS 2012 的路径的颠簸,发现我们受到了this 的影响,通过我们使用微软对该语言的非标准扩展。

是否有任何工具可以在我们的代码库上运行,它可以告诉我们我们正在使用多少其他非标准扩展,以便我们可以在它们给我们带来更多问题之前消除它们?

【问题讨论】:

  • 你检查过编译器选项吗?在许多情况下,您可以禁用旧编译器中的扩展并查看失败的地方。
  • 我的建议是始终使用至少两个编译器,最好更多。

标签: c++ visual-studio-2010 standards


【解决方案1】:

指定禁用扩展的编译器开关/Za

例如下面的代码:

#include <string>

void f(std::string&) {}

int main()
{
    f(std::string("hello"));
}

在未指定 /Za 时编译(带有警告),但在指定 /Za 时编译失败并出现以下错误:

main.cpp(7) : 错误 C2664: 'f' : 无法将参数 1 从 'std::basic_string<_elem>' 转换为 'std::string &' 和 [ _Elem=char, _Traits=std::char_traits, _Ax=std::分配器 ] 非常量引用只能绑定到左值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 2012-11-29
    相关资源
    最近更新 更多