我目前在Visual Studio 2010中维护了一个非常庞大且非常古老的C ++项目。我们团队的一名成员刚刚测试了VS 2012升级路径的崎岖不平,发现我们受到了this的影响,通过我们使用微软的非标准语言扩展。
我们的代码库是否有任何工具可以告诉我们我们使用了多少其他非标准扩展程序,因此我们可以在它们引起更多问题之前消除它们?
答案 0 :(得分:3)
指定禁用扩展名的编译器开关/Za
。
例如,以下代码:
#include <string>
void f(std::string&) {}
int main()
{
f(std::string("hello"));
}
在未指定/Za
时编译(带警告)但在指定/Za
时无法编译并出现以下错误:
main.cpp(7):错误C2664:'f':无法从'std :: basic_string&lt; _Elem,_Traits,_Ax&gt;'转换参数1 'std :: string&amp;' 同 [ _Elem =炭, _Traits =标准:: char_traits, _AX =标准::分配器 ] 非const引用只能绑定到左值