2010-08-25 50 views
1

我已經安裝了omnicppcomplete,標記列表,cscope的,等等,我用我的生成標籤/usr/include的ctags:調用pthread_mutex_init

ctags -R --c++-kinds=+plx --fields=+iaS --extra=+q . 

在我.vimrc我設置:

set tags=/usr/include/tags,./tags,./..tags,./**/tags 

但現在當我編寫我的多線程程序時,我不能通過按Ctrl + ]切換到pthread_createpthread_mutex_init。它說「找不到標籤」。

所以我寫在這裏尋求幫助。謝謝。

回答

1

您應該查看您的標籤文件以確定pthread_mutex_initpthread_create是否真的在其中。如果他們不是,那麼可能是(1)源未被掃描或(2)他們實際上並不以您期望的形式存在。 libc包含pthread_createpthread_mutex_init,這是一組非常複雜的代碼,通常您會發現通過多層預處理器宏以間接方式定義了一個符號,在這種情況下,ctags不起作用。

+0

我搜索了/ usr/include中的標籤文件,找到以下行: __pthread_mutex_init bits/libc-lock.h/* extern int __pthread_mutex_init(.........)*/ 它就像是什麼你說。而pthread.h確實包含許多預處理器宏。 那麼是否有任何方法讓ctags知道這些標籤? PS,我注意到,當我打字並按下ctrl + n做詞完成時,它可以成功解析pthread_create和pthread_mutex_init函數 – Alex 2010-08-25 04:28:37

+0

好問題。你的文件是什麼:'/ usr/include/pthread.h'。在我的Mac上,完整的'pthread_create'聲明就在那裏,所以表面上這一切都可以在這裏工作。檢查'pthread_create'的'pthread.h'。如果它像你期望的那樣,那麼我認爲該文件沒有被解析。 – 2010-08-25 14:14:42

+0

我檢查了/usr/include/pthread.h,我在Fedora 13中也有完整的pthread_create聲明,但是我注意到另一個問題,它可以解析pthread_join,但不能解析pthread_create。所以我相信該文件被解析,但它似乎沒有解析所有這些,我需要一些其他配置? – Alex 2010-08-26 01:24:45

0

請測試如下因爲CTAGS需要一些萬分之一產生

須藤CTAGS -I THROW -I __THROWNL -I __attribute_pure -I 非空-I __attribute -R --c-種= + p --fields = + IAS --extra = + q --language力= C/USR /包含/