gpt4 book ai didi

我可以在另一个文件中使用 "int"而不是 "extern"int 吗?

转载 作者:行者123 更新时间:2023-11-30 17:47:21 25 4
gpt4 key购买 nike

我读到,如果我想在另一个 C 文件中使用全局变量,我应该在数据类型前面加上访问说明符 extern,如下所示:

File One                             File Two
int x, y; extern int x, y;
char ch; extern char ch;
int main(void) void func22(void)
{ {
/* ... */ x = y / 10;
} }
void func1(void) void func23(void)
{ {
x = 123; y = 10;
} }

并且错误地在文件二中我没有按原样声明 x, y。我将它们声明为 int xint y我等待编译器显示变量 x 和 y 重新定义的错误,但代码运行时没有任何错误。

例如:

文件一

#include <stdio.h>

int global = 1000; /** declare global variable called
global **/

int main(){

print();

return 0;
}

文件二

int global;   /** here I don't use the extern keyword **/

void print(void){

global = 100;

printf("\n global = %d",global);

return;

}

结果是:global = 100

程序编译和链接没有任何错误

所以我的问题是:是 extern说明符在这里是多余的?!

最佳答案

您不会收到任何错误,因为编译器不会检查外部变量的类型或是否存在。在链接阶段,链接器在目标文件中搜索对名为 x(或 y)的符号的引用。

关于我可以在另一个文件中使用 "int"而不是 "extern"int 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18944617/

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