29

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

4

2 回答 2

57

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

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

但是,我建议不要这样做。相反,使用目录变量来配置每个项目的语言标准。

在 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。

于 2015-06-21T12:02:53.757 回答
10

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

于 2017-07-31T14:45:59.367 回答