Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果我们将静态变量定义为全局变量,那么它的作用域应该在该文件中,但这里是I';我得到了不同的结果 //FILE1.c #包括 #包括 #包括“FILE2.c” main() { printf(“%d”,i); getch(); } //文件2.c 静态积分i=5;_C - Fatal编程技术网

如果我们将静态变量定义为全局变量,那么它的作用域应该在该文件中,但这里是I';我得到了不同的结果 //FILE1.c #包括 #包括 #包括“FILE2.c” main() { printf(“%d”,i); getch(); } //文件2.c 静态积分i=5;

如果我们将静态变量定义为全局变量,那么它的作用域应该在该文件中,但这里是I';我得到了不同的结果 //FILE1.c #包括 #包括 #包括“FILE2.c” main() { printf(“%d”,i); getch(); } //文件2.c 静态积分i=5;,c,C,这里我得到了输出5。为什么会这样?这应该是个错误,不是吗?因为您包含了源文件“FILE2.c”(不推荐使用)。预处理器只需将行#include“FILE2.c”替换为“FILE2.c” 因此,在您已知的文件FILE2.c中有一个变量i,但在文件FILE1.c中还有另一个变量i。他们的范围在他们自己的文件中(确切地说,是他们自己的翻译单位) 您应该只在C中包含头文件。Then但行的含义是“如果我们将任何静态变量定义为全局变量,则该变量的范围将仅在其定义的wch中位于该文件内”…plz clear…

这里我得到了输出
5
。为什么会这样?这应该是个错误,不是吗?

因为您包含了源文件
“FILE2.c”
(不推荐使用)。预处理器只需将行
#include“FILE2.c”
替换为
“FILE2.c”

因此,在您已知的文件
FILE2.c
中有一个变量
i
,但在文件
FILE1.c
中还有另一个变量
i
。他们的范围在他们自己的文件中(确切地说,是他们自己的翻译单位)


您应该只在C中包含头文件。

Then但行的含义是“如果我们将任何静态变量定义为全局变量,则该变量的范围将仅在其定义的wch中位于该文件内”…plz clear…@user2487315,因为预处理后,变量
i
实际上是在
File1.c
File2.c
中定义的,您需要了解预处理器对
#include
行做了什么。那么我如何检查这一行的使用“如果我们将任何静态变量定义为全局变量,那么该变量的作用域将仅在wch中其定义的文件中”请给出适当的示例…@user2487315删除行
#include“FILE2.c“
,您将看到错误。也许应该补充一点,这里定义了两个不同的变量,名为
i
,每个编译单元(
.o
文件)中各有一个。这不是C,用
int main(void)
替换
main()
不再是合法的C。你可能想要一本更新的C语言书。
//FILE1.c  
#include<stdio.h> 
#include<conio.h> 
#include "FILE2.c" 
main() 
{
 printf("%d",i);
getch();
}


//FILE2.c

static int i=5;