我有一个非常大且非常老的 C++ 项目,目前在 Visual Studio 2010 中维护。我们团队的一位成员刚刚测试了升级到 VS 2012 的路径的颠簸,发现我们受到了影响,通过使用微软的非- 语言的标准扩展。
是否有任何工具可以在我们的代码库上运行,它可以告诉我们我们正在使用多少其他非标准扩展,这样我们就可以在它们给我们带来更多问题之前消除它们?
我有一个非常大且非常老的 C++ 项目,目前在 Visual Studio 2010 中维护。我们团队的一位成员刚刚测试了升级到 VS 2012 的路径的颠簸,发现我们受到了影响,通过使用微软的非- 语言的标准扩展。
是否有任何工具可以在我们的代码库上运行,它可以告诉我们我们正在使用多少其他非标准扩展,这样我们就可以在它们给我们带来更多问题之前消除它们?
/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 ] 非常量引用只能绑定到左值