【发布时间】:2023-03-12 18:19:01
【问题描述】:
在下面的代码中,为什么多个声明(和一个定义)对于全局变量 x 可以正常工作,但对于 main() 函数内部的局部变量 y 却不行?它显示以下 2 个错误:
1) 重新声明没有链接的“y”
2) 之前的 'y' 声明在这里
为什么局部变量显示错误,全局变量却没有?不仅是我的书,而且来自该论坛的以下 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);
}
【问题讨论】:
-
阅读en.wikipedia.org/wiki/Linker_%28computing%29 了解链接和链接器。还有莱文的书iecc.com/linker;所以局部变量没有链接(因为它们在本地调用框架中,在堆栈上)。
-
但它在我的编译器中也显示 x 错误。
-
@Jeyamaran 您可能一直在使用 C++ 编译器。这是一道 C 题。
标签: c