c++ - YouCompleteMe,头文件

标签 c++ vim

我正在使用 YouCompleteMe 处理一些 C++ 头文件。头文件不包括查找它正在使用的所有类所需的所有其他头文件。在不修改头文件的情况下,我可以修改我的 .ycm_extra_conf.py 文件让 clang 知道它需要的额外头文件吗?

举个例子,假设我有三个文件“A.h”、“B.h”和“C.cc”。

抄送

#include "A.h"
#include "B.h"

啊啊

class A {};

B.h

class B : A {};

B 包含文件无法自行编译,但 C.cc 可以正确编译,因为它包含的内容顺序正确。但是,如果我自己打开 B.h,它会提示 A 没有被定义。

我知道 C.cc 编译正确,那么在打开 B.h 时我如何告诉 YCM 在与 C.cc 相同的上下文中编译它? Flags 似乎不足以告诉 YCM 如何编译文件,因为它需要用 C.cc 编译。

最佳答案

在您的 .ycm_extra_conf.py 中添加您的常规预处理器标志,例如:

flags = [
'-Wall',
'-Wextra',
'-Wno-variadic-macros',
'-fexceptions',
'-DNDEBUG',
'-DUNIT_TESTS',
'-std=c++11',
'-x', 'c++',
'-isystem', '/home/sehe/custom/boost',
'-isystem', '/usr/lib/gcc/x86_64-linux-gnu/4.8/include',
'-I', 'src',
'-I', 'include',
'-isystem', '/usr/include',
'-isystem', '/usr/local/include',
]

关于c++ - YouCompleteMe,头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24438211/

相关文章:

c++ - 如何为类的每个方法添加计时器?

vim - 为什么 vundle 需要关闭文件类型

visual-studio-code - VS 代码 : jump to next occurrence of character x

git - 如何保存更改并退出 Vim?

vim - 如何在 Vim 中对搜索的所有结果执行命令?

c++ - 在引用析构函数时, "invoked"在标准中意味着什么?

C++0x const RValue 引用作为函数参数

c++ - XRender 创建离屏图片

C++如何在字符后获取子字符串?

bash - VIM: chmod 命令不是编辑器命令