我知道这个问题已经被问过很多次了,但是我没有找到任何相关的答案。 根据 C
int x; //definition
extern int x; //declaration
int func(void); //declaration
int func(void) //definition
{
}
我的第一个问题是如果 int x 是定义,那么为什么编译器会显示重新声明错误
header files
int main()
{
int x,x; //for this it shows redeclaration error
}
我的第二个问题是,如果我定义了 var x,两次它都没有显示任何错误
header files
int x;
int x;
int main()
{
}
我正在使用 window 7 和 DevCpp 5.6.2
编辑:
header files
int y;
int main()
{
int x;
}
x 和 y 是这里的定义吗?
最佳答案
在文件范围内声明一个没有初始化器(也没有存储类说明符)的变量是一个暂定定义:
int i;
在同一个源文件中对同一个变量有多个暂定定义是有效的:
int i;
int i;
C 指定的行为就好像在源文件的顶部有一个声明,在源文件的末尾有一个int i = 0;
。
在 block 范围内没有暂定定义,在同一个 block 中多次声明同一个变量是无效的。
关于c - 声明和定义问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31448309/