为什么在C语言中可以定义两次变量?
- 论坛
- 为什么在C语言中可以定义两次变量?
13 浏览
为什么在C语言中可以定义两次变量?
我一直在测试全局变量、定义和声明,并且在这种情况下停下来:
main.c:
#include "stdio.h" void func(void); int a; int main(void) { a = 20; printf("in main: %d\n", a); func(); return 0; }
add.c:
#includevoid func(void); int a; void func() { printf("in add: %d\n", a); }
在C语言中,这行代码`int a;`既是声明又是定义,但我们知道变量不能被定义多次。那么为什么这段代码能够编译通过,而且有两个定义和两个声明的`a`变量呢?
我在CLion中工作,当我在main中按下“转到定义/声明”按钮时,指针会移动到add.c中的`a`,当我在add.c中做同样的操作时,它会回到main.c,所以我无法理解这里发生了什么。