2

インストールしましたがvimclang_complete何らかの理由でオートコンプリートしようとすると、、、などのOpenGLの機能の一部が表示されませglBindBufferglEnableVertexAttribArrayCTRL+XCTRL+を押しUてオートコンプリートを強制すると、関数名とパラメーターが表示されますが、一部の関数が欠落しているだけです。

でも、glfw自動完了を試してみましGLFW_KEY_ESCたが、そこにはありません。理由はわかりません。User defined completion (^U^N^P) Pattern not found

誰かがこの問題の解決策を持っていますか?これらの関数を頻繁に使用し、オートコンプリートが必要なため、非常に面倒です。

ありがとう。

編集:また、私のインクルードヘッダーファイルはこれです:

#include <iostream>
#include <string>
#include <GL/glew.h>
#include <GL/glfw.h>
#include <glm/glm.hpp>

ちなみに私はオンですArch Linux x64

4

2 に答える 2

1

大丈夫、私は答えを見つけました。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>

これで最終的に議論は完了しますが、この問題を修正する代わりの方法がある場合は、聞きたいと思います。

于 2013-03-13T22:56:35.510 に答える
1

zero57の答えを拡張します。

clang_complete固有のコンパイルフラグを追加して、clang_completeのマクロを定義できます。

let g:clang_user_options = ' -DCLANG_COMPLETE_ONLY'

次に、コードで使用できます

#ifdef CLANG_COMPLETE_ONLY
    #define GL_GLEXT_PROTOTYPES
    #include <GL/gl.h>
    #include <GL/glext.h>
#else
    #include <GL/glew.h>
#endif

これは完璧な解決策ではありませんが、clang_completeでパラメーターが完成し、コンパイル時にglewを使用するようになります。これはYouCompleteMe(YCM)プラグインで機能したので、clang_completeで機能すると思います。

于 2013-09-18T04:37:30.250 に答える