c - 如果我们将静态变量定义为全局变量,那么它的作用域应该在该文件内,但在这里我得到了不同的结果

标签 c

//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/

相关文章:

生成轻量级可执行文件的 C 编译器

python - 如何从C共享库返回无符号字符数组来调用python函数

c - 输出中打印了一些垃圾值。是什么原因?

c - 合并字符串 C 中的字符排序

c - (CLion/CMake) 为什么我的 c 文件保存在项目目录中时不属于任何目标项目?

c - 给定带有标记单元格的二维数组,找到由这些标记单元格形成的重复形状

c - c 中的一个月日历

c - 尝试编写字节序检测程序,但无法比较 char 值

在C中将char数组转换为大写

c - 在 C 中一次读取 16 个字节的文件