我有一些标题与C + + 11战斗,但我想使用像我的代码中的初始化列表功能。我的研究说,你可以启用仅在命令行新的功能,如:是否有GCC编译指示可以切换C++ 11?
g++ -std=c++11
我真正喜欢的是把我的代码:
#pragma CXX11_OFF
#include <old.hpp>
#pragma CXX11_ON
vector<int> v {1,2,3};
我一直没能够找到这样的编译指示。它存在吗?
我有一些标题与C + + 11战斗,但我想使用像我的代码中的初始化列表功能。我的研究说,你可以启用仅在命令行新的功能,如:是否有GCC编译指示可以切换C++ 11?
g++ -std=c++11
我真正喜欢的是把我的代码:
#pragma CXX11_OFF
#include <old.hpp>
#pragma CXX11_ON
vector<int> v {1,2,3};
我一直没能够找到这样的编译指示。它存在吗?
不会。这样的附注不存在。
您可以在§ 6.61 of the manual中找到GCC支持的所有编译指示列表。
你有参考吗? – cybermonkey
https://gcc.gnu.org/onlinedocs/gcc/Pragmas.html – cantelope
我不知道是否存在这样的编译指示。但是在同一个编译单元中打开和关闭C++ 11看起来对我来说很尴尬。也许你应该把“旧”部分放在一个dll中,然后将它导入到“新”部分。那么你只能编译新的部分与c + + 11启用
即使在源代码目录中,只要您使用不同的构建规则即可。与混合C和C++没有什么不同。 –
由于这样的编译指示不存在,我的建议是依靠make/cmake挑选基于编译标志的“正确”的文件。
#pragma GCC diagnostic warning "-std=c++11"
这条线增加了CPP 11标志来编译器。
在同一个文件中打开和关闭C++ 11是否有意义?这可能是棘手的解释。 – Brian
它与C++ 11“打”的方式是什么? – Eric
编译器可能支持这样的事情,这很可能是模糊的,但这会非常困难。 extern C++语句做了类似的事情,但是我无法想象编译器编写人员为每个C++标准发布付出了多大的努力。 –