ctags为系统头文件目录生成tags
来源:互联网 发布:淘宝小视频制作 编辑:程序博客网 时间:2024/05/07 16:49
分类: LINUX
如果gcc正在编译c++文件,并且gcc版本大于2.8那么__THROW会被定义 为throw()。如果正在编译c文件并且gcc版本在2.8 之前,__THROW则是一个空的宏定义,如果版本大于3.3,则__THROW被定义成一个attribute内包含的nothrow的形式。最后这个 形式表示这段c代码不会抛出异常。
正是这个复杂的宏定义干扰了ctags,对于所有像listen这样含有 __THROW的原型,ctags一律都不能正确解析。其原因是ctags 本身不是一个编译器也没有专门的预处理器,它是通过直接解析源文件的语法来工作的,不进行语义的检查和宏展开。对于宏,它的能力仅限于识别定义、调用和简 单的条件编译的猜测。
为了不让__THROW干扰ctags,需要在运行ctags时使用-I选项。我一般使用下面的命令生成系统头文件tags
ctags -I __THROW --file-scope=yes --langmap=c:+.h --languages=c,c++ --links=yes --c-kinds=+p --fields=+S -R -f ~/.vim/systags /usr/include /usr/local/include
其关键是-I __THROW部分和--c-kinds=+p部分。设置-I后,ctags会在处理文件时,就会忽略-I后面写出来的符号。而--c-kinds=+p 则告诉ctags需要为函数原型的声明也生成tag。--langmap=c:+.h表示.h视为c文件而不是c++文件。
最后,设置你的~/.vimrc,加入一行:
set tags+=~/.vim/systags
就可以享受系统库函数名补全、原型预览等功能了。
以前一直用Visual Studio写程序,这些功能都是已经有了的,不需要自己配置。在VIM里使用ctags、cscope和taglist插件和适当的配置一样可以达到同样的效果,而且有写地方还更方便了。
转载自:http://blog.chinaunix.net/uid-26495963-id-3354644.html
- ctags为系统头文件目录生成tags
- ctags为系统头文件目录生成tags
- ctags为系统头文件目录生成tags
- ctags为系统头文件目录生成tags
- ctags为系统头文件目录生成tags
- 为系统头文件目录生成tags
- ctags 为系统相关头文件生成tags
- 为VC系统头文件生成tags
- 用ctags为linux系统头文件生成systags
- 用ctags为linux系统头文件生成systags
- ctags的如何生成tags文件
- ctags 生成系统头文件、第三方库头文件的 tag
- ctags 生成系统头文件、第三方库头文件的 tag
- 用ctags自定义的生成规则, 自己生成了lua文件的tags
- ctags可以分析程序生成tag文件为vim所用
- tags文件生成及使用
- Vim cscope ctags tags
- cscope和ctags添加头文件的索引,查看系统库函数
- HDU 3308
- 全站GZIP压缩过滤器
- Java POI读取Office excel (2003,2007)及相关jar包
- Setting up a CloudStack dev environment on Windows
- Oracle SQL优化必要的全表扫描思路分析
- ctags为系统头文件目录生成tags
- Leetcode-Convert Sorted List to Binary Search Tree
- 基于有限自动机的KMP算法构造思想
- 氖憾费纤叵蜕庇弛椅醚叵沉沟饶必
- 俨羌臀茁钨傧痔账内畔挖纲醒渤盎
- 噬亟露牟驹控丈僦匝奖澜瘫着有心
- mfc控件透明
- 求两个数或者N个数的最大公约数和最小公倍数
- JavaScript事件集合