我按照书上的源程序编了连个.c用来尝试extern调用外部变量,但是不能成功,这是怎么回事
1、外部变量的声明必须在主程序文件之外的另一个文件中进行,例如在头文件或者其他源文件中进行声明。
2、外部变量的名称必须与主程序文件中的变量名称一致,否则无法正确调用。
3、在主程序文件中使用 extern 关键字声明外部变量时,不要给变量赋初值,因为该变量已经在其他文件中定义了,不需要再进行初始化。
如果您已经按照上述要求进行了声明,但仍然无法成功调用外部变量,可能存在以下几种可能性:
1、您的代码可能存在语法错误或者逻辑错误,导致程序无法正确执行。
2、您的代码可能存在链接错误,例如编译时找不到相关的库文件或者头文件。
3、您的代码可能存在编译器版本不兼容等问题,建议尝试更新编译器版本或者切换至其他编译器进行测试。
extern 是 C 语言中的一个关键字,用于声明一个全局变量或者函数,表示该变量或函数在当前文件之外已经定义。
以下是一个例子,演示了如何在一个源文件中定义一个全局变量,在另一个源文件中使用 extern 关键字来调用该变量:
文件1:global_var.c
int global_var = 10; // 定义一个全局变量 global_var
文件2:main.c
#include <stdio.h>
extern int global_var; // 声明一个外部全局变量 global_var
int main()
{
printf("global_var = %d\n", global_var); // 使用外部全局变量 global_var
return 0;
}
在文件 global_var.c 中,我们定义了一个全局变量 global_var。在文件 main.c 中,我们使用了 extern 关键字声明了一个外部全局变量 global_var,并且在 main 函数中使用该变量打印输出。
编译和链接这两个文件,然后运行 main 函数,即可看到输出结果:
global_var = 10
因为 global_var 是全局变量,所以它可以在所有函数之外使用,包括在不同的源文件中。在 main 函数中,我们使用 extern 关键字声明了外部全局变量 global_var,这样就可以在 main 函数中使用该变量,而不需要重新定义。
不知道你这个问题是否已经解决, 如果还没有解决的话:/*
** This header must not contain header guards (like <assert.h> must not).
** Each time it is invoked, it redefines the macros EXTERN, INITIALIZE
** based on whether macro DEFINE_VARIABLES is currently defined.
*/
#undef EXTERN
#undef INITIALIZE
#ifdef DEFINE_VARIABLES
#define EXTERN /* nothing */
#define INITIALIZE(...) = __VA_ARGS__
#else
#define EXTERN extern
#define INITIALIZE(...) /* nothing */
#endif /* DEFINE_VARIABLES */