web-dev-qa-db-fra.com

Configuration de Flycheck pour fonctionner avec C ++ 11

J'ai des problèmes importants pour configurer le contrôle de vol pour C++ 11. En ce moment, flycheck signale des choses comme std::to_string(). Le vérificateur que j'utilise est juste g ++. Que puis-je ajouter dans le fichier .emacs pour que flycheck assume C++ 11 par défaut?

25
mrQWERTY

Flycheck fournit l'option flycheck-gcc-language-standard dans ce but. Vous ne devez pas le définir globalement, car cela interromprait la vérification des fichiers C, mais vous pouvez le définir à partir de c++-mode-hook avec le code suivant dans votre fichier init:

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

Cependant, je recommanderais contre cela. À la place, utilisez Variables de répertoire pour configurer la norme de langue par projet.

Ouvrez le répertoire racine de votre projet dans Dired avec C-x d, puis tapez M-x add-dir-local-variable RET c++-mode RET flycheck-gcc-language-standard RET "c++11". Cela va créer un .dir-locals.el fichier dans le répertoire racine de votre projet. Emacs lit ce fichier chaque fois que vous visitez un fichier de ce répertoire ou de tout sous-répertoire, et définit des variables selon les règles de ce fichier. Plus précisément, Emacs définira désormais la norme de langage pour la vérification de la syntaxe Flycheck sur C++ 11 pour tous les fichiers C++ de votre projet.

49
lunaryorn

Déjà de très bonnes réponses. Je veux juste ajouter que si vous utilisez clang à la place, alors la variable à modifier est flycheck-clang-language-standard.

8
Alexander