看到一篇介绍C语言强符号与弱符号的文章非常好,转载过来加深印象。
原文地址:http://blog.csdn.net/astrotycoon/article/details/8008629
==============================================================================
一、概述
在C语言中,函数和初始化的全局变量(包括初始化为0)是强符号,未初始化的全局变量是弱符号。
对于它们,下列三条规则使用:
① 同名的强符号只能有一个,否则编译器报"重复定义"错误。
② 允许一个强符号和多个弱符号,但定义会选择强符号的。
③ 当有多个弱符号相同时,链接器选择占用内存空间最大的那个。
二、哪些符号是弱符号?
我们经常在编程中碰到一种情况叫符号重复定义。多个目标文件中含有相同名字全局符号的定义,那么这些目标文件链接的时候将会出现符号重复定义的错误。比如我们在目标文件A和目标文件B都定义了一个全局整形变量global,并将它们都初始化,那么链接器将A和B进行链接时会报错:
转载自原文链接, 如需删除请联系管理员。
原文链接:C语言中的强符号与弱符号(关于变量声明与定义的深入讨论),转载请注明来源!