配置Flycheck以使用C ++ 11

时间:2015-06-20 03:05:26

标签: c++ c++11 emacs flycheck

我在为C ++ 11配置flycheck时遇到很大麻烦。目前,flycheck正在标记std::to_string()之类的内容。我使用的检查器只是g ++。我可以在.emacs文件中添加什么,以便flycheck默认使用C ++ 11?

2 个答案:

答案 0 :(得分:48)

Flycheck为此目的提供了选项flycheck-gcc-language-standard。您不应该全局设置它,因为这会破坏对C文件的检查,但您可以使用init文件中的以下代码从c++-mode-hook设置它:

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

但是,我建议不要这样做。相反,使用Directory Variables为每个项目配置语言标准。

在Dired with 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现在将为项目中的所有C ++文件设置Flycheck语法检查语言标准到C ++ 11。

答案 1 :(得分:8)

已经很好的答案了。我只想补充一点,如果您使用clang,那么需要修改的变量是flycheck-clang-language-standard