YouCompleteMe(YCM) 不建议任何格式 (C11)

YouCompleteMe(YCM) doesnt suggest any formats (C11)

我正在尝试设置 YCM 以利用 C 中的自动完成功能。 我按照手册中描述的说明进行了操作。(:help YouCompleteMe) 但是它没有为我显示任何自动完成列表。 我的 ycm_extra_conf.py 和调试信息中的部分标志如下所示。 (ps,我也 post 我打开 C 文件并输入 pri 时的当前状态(它应该提示 printf 或等等...)

谢谢 :)

  '-std=c11',
  '-x',
  'c'
  '-isystem',
  '../BoostParts',
  '-isystem',
  '/System/Library/Frameworks/Python.framework/Headers',
  '-isystem',
  '../llvm/include',
  '-isystem',
  '../llvm/tools/clang/include',
  '-I',
  '.',
  '-I',
  './ClangCompleter',
  '-isystem',
  './tests/gmock/gtest',
  '-isystem',
  './tests/gmock/gtest/include',
  '-isystem',
  './tests/gmock',
  '-isystem',
  './tests/gmock/include',
  #C default header
  '-isystem',
  '/usr/lib/gcc/x86_64-linux-gnu',
  '-isystem',
  '/usr/lib/gcc/x86_64-linux-gnu/5/include',
  '-isystem',
  '/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed',
  '-isystem',
  '/usr/local/include',
  '-isystem',
  '/usr/include',

看开头:

'-std=c11',
'-x',
'c'
'-isystem',

最后两项变为 c-isystem(参见 :YcmDebug 输出)。它可能会混淆编译器。我猜你的意思是 -c 而不是。尽管如此,这样的标志对于 YouCompleteMe 来说是多余的,可以安全地省略。

P.S。 C++ 头文件也会混淆 C 编译器,因此您需要确保提供的头文件与当前源文件类型(是 C 还是 C++)一致。