gpt4 book ai didi

c - 为什么在不同文件中定义的函数可以访问在该文件中定义的变量而无需使用 extern?

转载 作者:行者123 更新时间:2023-11-30 15:33:53 26 4
gpt4 key购买 nike

我有两个文件:main.c 和 main1.c:

main1.c:

#include <stdio.h>

int a = 12;

void foo(void)
{
printf("%d\n", a);
}

main.c

#include <stdio.h>
#include <stdlib.h>

void foo(void);

int main(void)
{
foo();
}

即使变量'a'没有在main.c中定义并且没有用extern声明,为什么foo()打印12?在使用 extern 声明它之前,我无法在 main.c 中使用“a”变量。这是否意味着当调用该函数时,它会以某种方式“继承”定义它的翻译单元中定义的所有变量?我知道链接概念(或者我认为我是),我想知道这里发生了什么。

最佳答案

foo 的实现可以访问 a。 main.c 中 foo 的声明并未规定其实现可以访问的内容。

关于c - 为什么在不同文件中定义的函数可以访问在该文件中定义的变量而无需使用 extern?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23549694/

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