还是实现者的一种概念?
gcc编译c程序,未初始化的符号并没有成为弱符号啊
<<程序员的自我修养>>这本书上提到,对于gcc而言,程序中定义了但是没有初始化的符号就是弱符号,可以被强符号(定义并初始化)覆盖
于是做了一个实验:
$ cat x.c
int i=20;
$ cat main.c
#include<stdio.h>
int i;
int main()
{
printf("%d\n",i);
return 0;
}
却是是这样,而且这个仅对后缀名是.c的文件生效,.cpp就不起作用。
这个规则是gcc自己的呢,还是C/C++标准本身也提到了一些链接的规则?
谢谢。