C语言程序源文件中强符号,弱符号
时间: 2023-08-15 16:03:06 浏览: 198
在C语言程序源文件中,符号分为强符号和弱符号。
强符号指的是在一个源文件中被显式定义的符号,例如全局变量或函数。这些符号被认为是强符号,因为它们在编译链接时必须要被解析,否则将会报链接错误。
弱符号指的是在一个源文件中被定义了,但是可以被其他源文件重新定义的符号。例如,当多个源文件中都定义了同名的全局变量时,链接器会选择其中一个作为强符号,其他的则被认为是弱符号。如果没有强符号,那么所有的同名弱符号都会被链接起来。
弱符号可以使用__attribute__((weak))属性来显式地定义,例如:
```
int __attribute__((weak)) weak_variable = 0;
```
这将会定义一个弱符号weak_variable,如果没有其他源文件中的强符号与其重名,那么它将会被链接。
阅读全文