gpt4 book ai didi

c - 没有static关键字的C中具有文件范围的变量

转载 作者:行者123 更新时间:2023-12-02 01:32:57 25 4
gpt4 key购买 nike

在下面的代码中,我从 file2.c 中 var10 的变量声明中删除了单词 extern 我期望两个文件中的变量 var10 彼此独立,并且当其中一个文件中未使用 extern 时,它们都具有文件范围文件。但结果是 10 和 34,而不是我预期的 10 和 10。所以我们不能在不使用 static 关键字的情况下拥有文件范围的变量?如果两个变量的范围相同,为什么我们不会出现多重定义错误?我用的是codeblcoks+mingw

file1.c

#include <stdio.h>
int var10;

int main (void)
{
var10=10;
printf("Var10 before function call=%d\n",var10);
var10TestFunc2();
printf("Var10 after function call=%d\n",var10);
}

file2.c

#include<stdio.h>

int var10;
void var10TestFunc2(void)
{
var10 = 34;
}

最佳答案

默认情况下,没有静态的全局变量具有全局作用域。在这里你定义了相同的变量(没有初始化)。一个被视为定义,另一个被编译器视为声明。

如果您在定义本身中使用两个不同的值初始化变量。它将导致链接器错误。

关于c - 没有static关键字的C中具有文件范围的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33014601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com