配置Flycheck以使用C++ 11

mrQ*_*RTY 25 c++ emacs c++11 flycheck

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

lun*_*orn 49

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

(add-hook 'c++-mode-hook (lambda () (setq flycheck-gcc-language-standard "c++11")))
Run Code Online (Sandbox Code Playgroud)

但是,我建议不要这样做.而是使用目录变量为每个项目配置语言标准.

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

  • 以防它对一些人不起作用:如果安装了前者,似乎flycheck将在gcc之前使用clang.在这种情况下,变量是flycheck-clang-language-standard. (8认同)

Ale*_*der 8

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