链接器中的符号问题
1、 符号分类:
全局符号:由模块m定义并能被其他模块引用的全局符号—非静态的c函数和全局变量。
外部符号:由其他模块定义并被模块m引用的全局符号—在其他模块中定义c函数和全局变量。
局部符号:只被模块m定义和引用的局部符号—带static属性的c函数和全局变量。
2、 我对三个符号的理解:
○1局部符号和全局符号的区别就是是否带static,即不带static的全局变量和函数就是全局符号。
○2任何带有static属性的变量或者函数都是模块私有的,相当于java中的private作用。
○3符号均涉及到的变量为全局变量,不含某一模块中局部变量的概念。
3、○1例如
例如本题中的buf为外部符号(extern用来表明此函数/变量是在别处定义的,要在此处应用),bufp0 bufp1 swap为全局符号,c的局部变量temp不是符号,没有符号表条目。
○2例如
D项局部变量不属于符号范畴,即使是static short x=20 也不可以。