在下面的代码中,为什么多个声明(和一个定义)对全局变量 x
有效,但对局部变量 y
无效,它位于 主要()
功能?它显示以下 2 个错误:
1) redeclaration of 'y' with no linkage
2) previous declaration of 'y' was here
为什么显示局部变量错误而不是全局变量?不仅是我的书,而且来自该论坛的以下 2 个链接都明确指出我们可以多次声明一个变量(尽管只定义一次)。
并请注意解释第一个错误“没有链接的'y'的重新声明”的“没有链接”部分是什么意思?什么联系和对谁?局部变量将链接到哪里?
#include<stdio.h>
int x;
int x;
int x=303;
int main(void)
{
int y;
int y;
int y=776; //Works fine if above 2 declarations are removed!!
printf("The value of x is %d,and of y is %d",x,y);
}
最佳答案
在 C 和 C++ 中,int y;
在函数中既是声明又是定义。
在 C 语言中,文件范围(在任何函数之外)的 int x;
是一个声明和一个暂定定义。允许多个暂定定义;只允许一个定义。
关于c - 在 C 语言中,为什么多重声明对全局变量有效但对局部变量无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15734699/