//FILE1.c
#include<stdio.h>
#include<conio.h>
#include "FILE2.c"
main()
{
printf("%d",i);
getch();
}
//FILE2.c
static int i=5;
这里我得到输出5
。为什么这样?这应该是一个错误,不是吗?
最佳答案
因为您包含了源文件"FILE2.c"
(不推荐)。预处理器只需替换行 #include "FILE2.c"
内容为"FILE2.c"
.
所以有一个变量i
在文件FILE2.c
中你已经知道了,还有另一个变量 i
在文件FILE1.c
中。他们的范围在他们自己的文件内(准确地说,他们自己的翻译单元)。
您应该只在 C 中包含头文件。
关于c - 如果我们将静态变量定义为全局变量,那么它的作用域应该在该文件内,但在这里我得到了不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21084958/