2010-08-25 48 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 /包含/