繁体   English   中英

外部变量声明和定义

[英]Extern variable declaration and definition

我知道extern变量只是声明,以通知编译器存在一个变量,可以在任何地方定义它。 我的问题是声明和定义都可以存在于同一文件中吗?

main.c中

extern int var;
int var = 10;

当您包含标头时,该文件实际上已复制到您的源文件中(在预处理之后)。 这意味着,如果extern声明在源所包含的头文件中,则基本上总是这样做。

您可以这样做,但是没有意义,因为变量的声明具有相同的用途。 应将extern放在头文件中,并包含在此.c文件中,以便编译器可以检查您要告诉程序其余部分的类型是否与变量的实际类型匹配。 您将在其他要引用该变量的.c文件中包含标头。 请注意,声明该变量的.c文件并非严格必须要看到extern ,但最佳做法是确保类型一致。

我记得有人在其中声明变量的代码:

char error_ message[1024];

在一个.c文件中,然后执行以下操作:

extern char *error_message;

在另一个.c文件中。 这样编译和链接就很好了,但是在访问变量时崩溃了。 如果extern在声明中可见,则编译器将抱怨类型不匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM