我安装了 vim
和 clang_complete
,但由于某种原因,当我尝试自动完成时,它看不到一些 OpenGL 的功能,例如 glBindBuffer
或 glEnableVertexAttribArray
。我按 CTRL + X 和 CTRL + U 强制自动完成,它显示函数名称和参数,但它只是缺少一些功能。
即使使用glfw
,我也尝试自动完成GLFW_KEY_ESC
,但它不存在,我不知道为什么,它只是说用户定义的完成(^U ^N^P) 未找到模式
有人能解决这个问题吗?这很烦人,因为我经常使用这些功能并且需要自动完成。
谢谢。
编辑:我的包含头文件也是这样:
#include <iostream>
#include <string>
#include <GL/glew.h>
#include <GL/glfw.h>
#include <glm/glm.hpp>
顺便说一下,我使用的是 Arch Linux x64
。
最佳答案
好吧,我找到了答案。因为 clang_complete 无法完成 GLEW 创建的参数(因为函数被定义为 #define FOO somefunction,而不是定义为: #define FOO(arg1, arg2, arg3) someFunction(arg1, arg2, arg3))
要解决此问题,您必须将此选项添加到 ~/.vimrc 文件中。
let g:clang_complete_macros = 1
现在,您将获得函数完成,但仍然没有参数完成。因此,您必须将 GLEW(不幸的是)替换为
#define GL_GLEXT_PROTOTYPES
#include <GL/gl.h>
#include <GL/glext.h>
这将最终完成论证,不过,如果有解决此问题的替代方法,我想听听。
关于c++ - vim clang Complete 看不到 opengl 的一些功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15260891/