Следующий код компилируется и запускается в Xcode 5 и Visual Studio 2013. Мне интересно попробовать Codelite, но Codelite не будет компилировать следующую программу (проблема с тех пор, как я работая с выделенными перечислениями в моем проекте). Насколько я понимаю, Codelite использует тот же компилятор, что и Xcode.Как включить возможности C++ 11 в кодеделите
Действительно ли код действителен для C++ 11? Почему Коделит не может его скомпилировать?
#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
Кажется Codelite не нравится C++ 11: «предупреждение: область действия перечислений являются C++ 11 extension ' –
Похоже, ваш компилятор не работает в режиме C++ 11, попробуйте добавить переключатель '-std = C++ 11' –
Я думаю, вы должны поместить свое Редактирование в качестве ответа на свой вопрос. Действительно, это может помочь кому-то в будущем, но может пропустить чтение, думая, что это продолжение вашего вопроса. – CygnusX1