警告:非静态数据成员初始值设定项仅适用于-std = c ++ 11或-std = gnu ++ 11 [默认启用]

时间:2014-06-28 17:57:03

标签: c++ eclipse c++11 cygwin eclipse-cdt

我刚刚在我的机器上安装了最新版本的cygwin和eclipse luna。它工作正常,我能够运行我的项目。然而,当我建立它们时,我得到了我不明白的警告。例如,以下是我从“c ++ Primer”一书的网站获得的头文件“Sales_item.h”中的警告:

warning: defaulted and deleted functions only available with -std=c++11 or -std=gnu++11 [enabled by default]
     Sales_item() = default;
                    ^
../src/Sales_item.h:70:27: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
     unsigned units_sold = 0; // explicitly initialized
                           ^
../src/Sales_item.h:71:22: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
     double revenue = 0.0;
                      ^
Finished building: ..

这些警告意味着什么?我应该做点什么吗?

1 个答案:

答案 0 :(得分:4)

-std=c++0x-std=c++11-std=c++1y添加到编译器标记中。

您可以看到编译器说:

defaulted and deleted functions only available with -std=c++11 or -std=gnu++11

在终端中编译的示例:

g++ -std=c++0x main.cpp -o myExe

在Eclipse中,正如πάνταῥεῖ所建议的那样,你可以这样做:

Project ->Properties ->C++ Build ->Misc Options

或者,在我的Kepler Eclipse中,可以右键单击该项目,然后:

Properties ->C++ Build -> Settings

并在Command文本框中,您可以看到您正在使用的编译器。你也可以在那里编写编译器标志。

如需了解更多信息,请按照Baum mit Augen的建议阅读此answer