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

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

22

Решение

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 на C ++ 11 для всех файлов C ++ в вашем проекте.

45

Другие решения

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

8

По вопросам рекламы [email protected]