Я хочу использовать библиотеку без C ++ 11, но она не скомпилируется для меня:
(Теоретически так должно быть согласно документации @http://easylogging.muflihun.com:
«Для более низкой версии C ++ (не C ++ 11), пожалуйста, рассмотрите возможность использования Easylogging ++ v8.91.»)
ошибка: #error Этот файл требует поддержки компилятора и библиотеки для стандарта ISO C ++ 2011. Эта поддержка в настоящее время является экспериментальной и должна быть включена с помощью опций компилятора -std = c ++ 11 или -std = gnu ++ 11.
Структура файла:
./Main.cpp
./logger/easylogging++.h
Содержимое Main.cpp:
#include "logger/easylogging++.h"_INITIALIZE_EASYLOGGINGPP
using namespace std;
int main(int argc, char* argv[]) {
LINFO << "This is my first log";
return 0;
}
../src/logger/easylogging++.h: В функции ‘std :: string easyloggingpp :: internal :: threading :: getCurrentThreadId () ’:
../src/logger/easylogging++.h:691:16: ошибка: «std :: this_thread» не был объявлен
сс << станд :: this_thread :: get_id ();
Компилятор: gcc версии 4.8.2 (Ubuntu 4.8.2-19ubuntu1), ОС: Ubuntu 14.04 LTS
Как Т.С. в решении предлагается изменить этот раздел кода наверху easylogging ++. h:
#if defined(__GNUC__)
# define _ELPP_GCC_VERSION (__GNUC__ * 10000 \
+ __GNUC_MINOR__ * 100 \
+ __GNUC_PATCHLEVEL__)
# if defined(__GXX_EXPERIMENTAL_CXX0X__)
# define _ELPP_CXX0X 1
# elif (_ELPP_GCC_VERSION >= 40801)
# define _ELPP_CXX11 1
# endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
#endif // defined(__GNUC__)
Меняя оба _ELPP_CXX0X
а также _ELPP_CXX11
до 0 исправит проблему.