最近,我在使用vscode看linux内核源码,以前忽略了vscode中各个符号对应的含义,发现如果能够记住这些符号的含义,例如如果想查看源文件内部静态函数的调用关系,一般只有2种情况,一种是作为子函数被其他函数调用,这个时候首先看到的是函数的符号,另外一种是被函数指针变量绑定,这个时候看到的是变量的符号。因此,今天特意将经常使用的符号记录下来,可能不是很全,后面如果再遇到其他的再补充。

(1):代表函数,无论这个函数是static修饰的静态函数,还是全局函数都用这个符号表示,extern修饰的全局变量声明也是用这个符号表示。

(2):结构体类型定义

(3):结构体类型定义内部成员变量

(4):全局变量,无论是static修饰的静态全局变量,还是普通全局变量,如果是静态局部变量,或者普通局部变量都不会显示。

(5):枚举类型定义

(6):枚举成员,而且显示表明了是int类型

(7):类型别名,也就是使用typedef给类型起别名。

(8)::这个我不怎么熟悉,通过查询AI知道该符号为“导出”或“可见性有效”的意思,代表“导出”或者“公共”符号的含义,意味着该元素能够被其他模块导入或者使用。经常与EXPORT、subsys、module等字样结合。注意,它不是宏定义,因为宏定义在vscode的大纲列表中是不显示的。

今天看linux源码,发现这个箭头符号还有一个更加常见,易懂的含义,那就是“可展开”,如下图所示:

宏定义是在预处理阶段替代,而非展开的意思,因此在vscode的outline大纲列表中没有体现宏定义。

        

更多推荐