是否可以让visual studio检查项目是否将使用g++;? 因为C++现在使用头,有时一个头包含另一个头,而你没有注意到它,因为代码可以用一个编译器编译而不是另一个编译器,或者一个特征在一个编译器中实现,而不是另一个,因此,我想知道是否有办法让VisualStudio检查该项目是否会以某种方式同时使用VS编译器和g++进行编译?还是每次都要用两个编译器手动重新编译?如果我必须使用这两种编译器重新编译,我如何使用visual studio自动化该过程,从而不必手动执行该过程?

是否可以让visual studio检查项目是否将使用g++;? 因为C++现在使用头,有时一个头包含另一个头,而你没有注意到它,因为代码可以用一个编译器编译而不是另一个编译器,或者一个特征在一个编译器中实现,而不是另一个,因此,我想知道是否有办法让VisualStudio检查该项目是否会以某种方式同时使用VS编译器和g++进行编译?还是每次都要用两个编译器手动重新编译?如果我必须使用这两种编译器重新编译,我如何使用visual studio自动化该过程,从而不必手动执行该过程?,c++,visual-studio,visual-c++,C++,Visual Studio,Visual C++,gcc的开发周期比MS visual studio快。因此,询问VisualStudio“我的代码是否可以由g++正确编译?”毫无意义——它永远不会知道最新版本的gcc具有哪些功能和错误修复 而且,问这样的问题根本没有意义——如果你想知道“如果我做X会发生什么”,就做X P>你想知道的是,“我的代码< >包括< /Cord>与C++标准兼容的指令吗?”MS Visual Studio只是一个实现—它不是一个可移植性检查工具。编译代码,并正确地执行它是最好的,这本身就是一个伟大的任务(C++编译

gcc的开发周期比MS visual studio快。因此,询问VisualStudio“我的代码是否可以由g++正确编译?”毫无意义——它永远不会知道最新版本的gcc具有哪些功能和错误修复

而且,问这样的问题根本没有意义——如果你想知道“如果我做X会发生什么”,就做X

<> P>你想知道的是,“我的代码< >包括< /Cord>与C++标准兼容的指令吗?”MS Visual Studio只是一个实现—它不是一个可移植性检查工具。编译代码,并正确地执行它是最好的,这本身就是一个伟大的任务(C++编译得如此困难)。

GCC是C++的另一种实现方式,具有自己的标头。事实上,从我的经验来看,MIWW C++头更为“简约”,也就是说,他们尽量不包含。我的猜测是,对于不使用预编译头的系统,他们会尽量减少编译时间,而MS Visual Studio将预编译头视为一项基本功能


因此,最好使用gcc/mingw作为“标准符合性”检查。

VS2015支持clang编译器,它通常是三种编译器中最符合要求的编译器。你可以用叮当声编译你的代码

区分编译器和标准库实现是不同的,这一点很重要。i、 您可以将编译器与随不同工具链提供的标准库进行混合和匹配。因此,在标准库实现中,使用clang编译不会遇到差异问题


要做到这一点,您必须链接并提供要链接的标准库实现的标题。默认情况下,VisualStudio链接到它自己的运行时,并包含msvc运行时标题,您必须更改项目配置才能实现它,但这应该是可能的。不过,使用目标平台自己的工具链简单地编译它会省去很多麻烦。

解决方案是包含您需要的标题。@juanchopanza关于由一个编译器而不是另一个编译器实现的功能呢?跟踪它们是一件乏味的事情,我想让这个过程自动化。你问的是标题,而不是非标准功能。C++标准指定每个名称在哪个声明或定义中。@ JuangopangZa我也询问了一些特性。我不是说非标准的。试着使用cmake生成MSVS解决方案文件和Makefile。你需要安装g++和各种gnu工具(试试cygwin)才能通过Makefile进行构建。我听说过模块,它们能解决这个问题吗?我从来没有使用过它,但文档表明它是另一种方式-clang支持与MSVC IDE支持运行clang编译器相比(他们做了额外的努力)。CLAN编译器支持C++的MSVC扩展。