c++ - 如何在 Codelite 中启用 C++11 特性

标签 c++ c++11 codelite enum-class

以下代码在 Xcode 5 和 Visual Studio 2013 中编译和运行。我有兴趣试用 Codelite,但 Codelite 不会编译以下程序(这是一个问题,因为我在我的项目中使用作用域枚举)。据我了解,Codelite 使用与 Xcode 相同的编译器。

代码是否符合 C++11 的要求?为什么Codelite无法编译?

#include <iostream>

namespace abc
{
    namespace xyz
    {
        enum class SampleEnum
        {
            SomeValue = 0,
            SomeOtherValue = 1
        };
    }
}

int main(int argc, char **argv)
{
    abc::xyz::SampleEnum e = abc::xyz::SampleEnum::SomeValue;
    return 0;
}

这是 Codelite 的构建输出。如果出现乱码,它会指向变量实例化中的“SampleEnum”一词,并表示“需要一个类或命名空间”。

/bin/sh -c 'make -j8 -e -f  Makefile'
----------Building project:[ ClangTest - Debug ]----------
codelite-cc /usr/bin/clang++   -c  "/Users/xxx/Desktop/Test/ClangTest/main.cpp" -g -O0 -Wall  -o ./Debug/main.cpp.o -I. -I.
/Users/xxx/Desktop/Test/ClangTest/main.cpp:7:8: warning: scoped enumerations are a C++11 extension [-Wc++11-extensions]
                enum class SampleEnum
                     ^
/Users/xxx/Desktop/Test/ClangTest/main.cpp:17:40: error: expected a class or namespace
    abc::xyz::SampleEnum e = abc::xyz::SampleEnum::SomeValue;
                             ~~~~~~~~~~^
1 warning and 1 error generated.
make[1]: *** [Debug/main.cpp.o] Error 1
make: *** [All] Error 2
2 errors, 1 warnings

最佳答案

必须将 -std=c++11 传递给编译器才能启用 C++11 功能。以下是在 Codelite 中执行此操作的步骤:

  • 在工作区 View 中右键单击该项目。
  • 选择此弹出菜单底部附近的设置。通用设置->编译器->C++编译器选项
  • 单击以分号分隔的编译器开关列表以显示省略号,然后单击省略号。
  • 点击 -std=c++11 的复选框

screenshot of the project settings windows

关于c++ - 如何在 Codelite 中启用 C++11 特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28779334/

相关文章:

C++11 多线程 : State of thread after execution

c++ - 如何对模板参数实现 child-of-X 限制?

C++ CodeLite 启用多线程?

c - SDL 2.0 构建错误(重复)

c++ - msgsnd 参数无效

c++ - 使用 SSE 的矩阵乘法

c++ - 获取用户输入时出现段错误

c++ - 编译器对 new 返回值的行为

c++ - 如何修复 vs2013 上的 C3848 错误?

c++ - Codelite 中的项目未编译