c - 声明和定义问题

标签 c variables declaration definition

我知道这个问题已经被问过很多次了,但是我没有找到任何相关的答案。 根据 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/

相关文章:

javascript - Node.js 中的变量作用域

c - 在 C 中为数组分配多个值

css - 为什么 CSS 类声明不适用于标记的 <div>?

c - 无法访问代码并且无法读取所有输入字母

c++ - 如何跟踪执行 switch case 值的顺序?

c - 在结构中初始化一个数组(w/和值数组)

javascript - 为什么变量立即执行窗口对象而不存储它?

c - 是否可以在没有预定义查找表的情况下检查是否定义了标志,并且仅将标志名称作为字符串给出?

objective-c - 我应该在 Objective C 类中的什么位置设置默认变量值

java - 未初始化的最终局部变量与未初始化的最终实例变量