我尝试重新定义变量并将其初始化为零。毫不意外,该编译以error:redefinition of a
结尾。
#include <stdio.h>
static int a = 0;
static int a = 0;
int main()
{
return 0;
}
令我惊讶的是,删除初始化后,程序已成功编译。
#include <stdio.h>
static int a ;
static int a ;
int main()
{
return 0;
}
此外,我尝试仅初始化两个变量之一,并且编译成功。
#include <stdio.h>
static int a ;
static int a = 0;
int main()
{
return 0;
}
我知道ELF对象文件中“强符号”和“弱符号”的区别。但是根据CSAPP,这些概念与全局变量相关,而不是静态变量。因此,我认为它无法在这里回答我的问题。
编译器是Windows 10中的MinGW-W64项目构建的gcc 8.1.0。
谢谢。