Настройка Flycheck для работы с С++ 11

У меня возникли проблемы с настройкой flycheck для С++ 11. Прямо сейчас, flycheck отмечает такие вещи, как std::to_string(). Контроллер, который я использую, просто g++. Что я могу добавить в файл .emacs, чтобы флайчех предположил, что С++ 11 по умолчанию?

Ответы

Ответ 1

Flycheck предоставляет для этой цели опцию flycheck-gcc-language-standard. Вы не должны устанавливать его глобально, потому что это нарушит проверку файлов C, но вы можете установить его из c++-mode-hook со следующим кодом в файле инициализации:

(add-hook 'c++-mode-hook (lambda () (setq flycheck-gcc-language-standard "c++11")))

Однако я бы рекомендовал против этого. Вместо этого используйте Переменные каталога для настройки стандарта языка для каждого проекта.

Откройте корневой каталог вашего проекта в Dired с помощью C-x d, а затем введите M-x add-dir-local-variable RET c++-mode RET flycheck-gcc-language-standard RET "c++11". Это создаст файл .dir-locals.el в корневом каталоге вашего проекта. Emacs читает этот файл всякий раз, когда вы посещаете файл из этого каталога или любого подкаталога и задаете переменные в соответствии с правилами этого файла. В частности, Emacs теперь установит языковой стандарт для проверки синтаксиса Flycheck на С++ 11 для всех файлов на С++ в вашем проекте.

Ответ 2

Очень хорошие ответы. Я просто хочу добавить, что если вместо этого использовать clang, тогда необходимо изменить переменную flycheck-clang-language-standard.