关于C语言链接属性internal的问题

关于internal链接属性的定义:属于internal链接属性的标识符在同一源文件内的所有
声明中都指同一个实体,但位于不同源文件的多个声明则分属不同的实体。
这个定义的后半句我能理解,可是前半句,我就有点糊涂了。
比如说在同一个代码块中这样声明
{
static int a;
static int a;
}
上面的属于重复定义,编译器报错。
再比如,在同一源文件中的两个代码块中如下声明:
{
static int a;
}
{
static int a;
}
这两个声明在同一源文件内,但是在不同的代码块中,它们是两个实体,地址都不一样。
所以究竟链接属性internal要怎样理解呢?

3个回答

变量除了链接属性,还有作用域,在代码块内声明的变量,作用域只在代码块内

有两个问题:
一 :变量的链接属性与其作用域有关,这个定义没有明确指出。
二 :同一作用域有多个相同的声明,除了在文件作用域(所有代码块之外)声明,其他都是重复定义。所以说,只有这种情况吗?

实际上是这样:在不同的上下文中,static关键字具有不同的意思。当它用于函数定义或者用于代码块之外的变量声明时,static关键字用于修改标识符
的链接属性,当它用于代码块内部的变量声明时,static关键字用于修改变量的存储类型,即是静态变量。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问