我有一些与C ++ 11斗争的标题,但我想在我的代码中使用初始化列表等功能。我的研究表明,您只能在命令行启用更新的功能,例如:
g++ -std=c++11
我真正喜欢的是放入我的代码:
#pragma CXX11_OFF
#include <old.hpp>
#pragma CXX11_ON
vector<int> v {1,2,3};
我还没有找到这样一个pragma。它存在吗?
答案 0 :(得分:8)
没有。这样的pragma不存在。
您可以在§ 6.61 of the manual中找到GCC支持的所有编译指示的列表。
答案 1 :(得分:1)
我不知道是否存在这样一个pragma。但是在同一个编译单元中打开和关闭C ++ 11看起来很尴尬。也许你应该放置&#34; old&#34;在一个dll内部,然后将其导入&#34; new&#34;部分。然后,您只能在启用c ++ 11的情况下编译新部件
答案 2 :(得分:1)
#pragma GCC diagnostic warning "-std=c++11"
此行向编译器添加cpp 11标志。
答案 3 :(得分:0)
由于这种编译指示不存在,我的建议是依靠make / cmake来选择&#34; right&#34;基于编译标志的文件。