我正在尝试使用 4 个文件为外部变量构建一个简单的测试用例。 文件如下
//header.h
#include <stdio.h>
void func1();
void func2();
extern int var;
//主.c
#include "header.h"
int main()
{
func2();
func1();
return 0;
}
//func1.c
#include "header.h"
void func1()
{
printf("I am in function 1\t var = %d", var);
return ;
}
//func2.c
#include "header.h"
void func2()
{
int var = 4;
printf("I am function 2\n");
return ;
}
我正在尝试理解外部变量的概念。我将这些文件编译为
gcc -c main.c
gcc -c func1.c
gcc -c func2.c
并将它们链接在一起
gcc -o main main.o func1.o func2.o
我收到一个错误提示
func1.o: In function `func1':
func1.c:(.text+0x6): undefined reference to `var'
这是为什么呢?我在 func2 中定义它,然后在另一个文件中使用它。我的理解有什么问题吗?
最佳答案
当你在函数内部声明一个变量时,它是一个局部变量。
它的范围将在该功能 block 中。当您使用 extern
关键字时,它会在全局部分中搜索变量。所以你必须将变量声明为全局变量。
#include "header.h"
int var = 4;
void func2()
{
printf("I am function 2\n");
return ;
}
输出将是,
I am function 2
I am in function 1 var = 4
关于c - c文件中外部变量的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35197073/