source insight解析命令行
- 格式:docx
- 大小:527.80 KB
- 文档页数:3
安装完SI后,会在安装一个如下的文件
我的文档\Source Insight\c.tom
c.tom的功能与C语言中的#define类似。打开这个文件,会看到有很多空格分割的字符串,SI在我们阅读代码时,自自动将空格前的字符串替换为空格后的字符串(仅仅是影响阅读,不影响编译喔)。
举两个例子。
#define AP_DECLARE(type) type
AP_DECLARE(int) ap_calc_scoreboard_size(void)
{
....
}
source insight 把AP_DECLARE当作了函数,当想查ap_calc_scoreboard_size的时候总是很麻烦,不能直接跳转.
我的文档\Source Insight\c.tom 加入
AP_DECLARE(type) type
如下的代码如何让SI 识别出f是一个函数?
#define EXPORT_CALL(return,functionname) return functionname
EXPORT_CALL (int, f1())
我的文档\Source Insight\c.tom 加入
EXPORT_CALL(return,functionname) return functionname
同时,在#define中,标准只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接前后两个参数,把它们变成一个字符串。(c.tom的功能与支持##,不支持#好像)
这个技巧我在阅读zebra的命令行代码时也用到了。
比如下吗一段代码:(DEFUN是一个宏定义,这个文件中有很多这样的DEFUN。不修改c.tom 之前看到的是这样的)
在我的文档\Source Insight\c.tom的最后添加字符”DEFUN(A,B,C,D,E) A##_cmd( ”,重新打开工程,并同步,之后的效果(filter_set_cisio为界,注意最后要有个括号)
看到没,都编绿了。点击其中一个节点能直接跳转了。按快键F7,在symbol window也能看到这些函数,且能直接跳转对应的名字,比define好看多了。
我上面的代码都是zebra中的代码,在实际工作中,命令行的解析顺序可能与此不同,但可以类推的。
反复提醒:1.修改c.tom文件之后,一定要关闭再打开工程,并同步文件才能看到效果。不然要等下次你打开工程才能看到效果啊。SI也会自动同步,但比较慢。
2.c.tom一般都在SI的安装目录下,看你安装在那个盘。我的是d:\My Documents\Source Insight。