2015-12-14 80 views
6

我有一些标题与C + + 11战斗,但我想使用像我的代码中的初始化列表功能。我的研究说,你可以启用仅在命令行新的功能,如:是否有GCC编译指示可以切换C++ 11?

g++ -std=c++11 

我真正喜欢的是把我的代码:

#pragma CXX11_OFF 
#include <old.hpp> 
#pragma CXX11_ON 

vector<int> v {1,2,3}; 

我一直没能够找到这样的编译指示。它存在吗?

+7

在同一个文件中打开和关闭C++ 11是否有意义?这可能是棘手的解释。 – Brian

+5

它与C++ 11“打”的方式是什么? – Eric

+0

编译器可能支持这样的事情,这很可能是模糊的,但这会非常困难。 extern C++语句做了类似的事情,但是我无法想象编译器编写人员为每个C++标准发布付出了多大的努力。 –

回答

0

我不知道是否存在这样的编译指示。但是在同一个编译单元中打开和关闭C++ 11看起来对我来说很尴尬。也许你应该把“旧”部分放在一个dll中,然后将它导入到“新”部分。那么你只能编译新的部分与c + + 11启用

+1

即使在源代码目录中,只要您使用不同的构建规则即可。与混合C和C++没有什么不同。 –

0

由于这样的编译指示不存在,我的建议是依靠make/cmake挑选基于编译标志的“正确”的文件。

0

#pragma GCC diagnostic warning "-std=c++11"

这条线增加了CPP 11标志来编译器。