如何测试在Visual Studio 2010中开发和管理的c++代码库的可移植性?

How can I test the portability of a C++ codebase developed and managed in Visual Studio 2010?

本文关键字:管理 开发 c++ 代码 可移植性 2010 何测试 测试 Studio Visual      更新时间:2023-10-16

我有一个非常大且非常老的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':无法将参数1从'std::basic_string<_Elem,_Traits,_Ax>'转换为'std::string &'与(_Elem =字符,_Traits = std:: char_traits,_Ax = std::分配器]非const引用只能绑定到左值