问题:尽管在项目.pro文件中设置了Config += c++11
,但QtCreator似乎无法使用C ++ 11标准进行编译。
背景:作用域枚举的全局定义位于单独的头文件global_definitions.h中:
// ...
enum class dr_items { CROSSHAIR,
GRID,
LABELS,
DATA,
AMOUNT // count element
};
此文件为每个作用域枚举产生警告,但没有错误:
/path/global_definitions.h:7: warning: scoped enums only available with -std=c++11 or -std=gnu++11
enum class dr_items { CROSSHAIR,
^
在文件oscscene.cpp中首次使用作用域枚举时发生错误:
#include "oscscene.h"
#include "global_definitions.h"
// ...
for(int i=0;i++;i<dr_items::AMOUNT){
// ...
带错误输出
/path/oscscene.cpp:9: error: 'dr_items' is not a class or namespace
for(int i=0;i++;i<dr_items::AMOUNT){
^
项目.pro文件:
QT += core gui
CONFIG += c++11
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
版本:
答案 0 :(得分:0)
由于qmake似乎使用Qt 4.6而不是支持Config += c++11
的Qt5,解决方案是添加
QMAKE_CXXFLAGS += -std=c++11
在项目.pro文件中的,如BoBTFish评论的那样。这解决了这个问题。