0

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

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

4

1 回答 1

3

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

例如,下面的代码:

#include <string>

void f(std::string&) {}

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

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

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

于 2013-05-23T13:37:29.033 回答