source.c ::
int source=0;
int desti=0;
char str[50]="";
source.h ::
extern int source;
extern int desti;
extern char str[50];
station1.c
#include"source.h"
#include<stdio.h>
main()
{
printf("%d %d",source,desti);
}
当我编译station1.c时出现以下错误:
undefined reference to 'desti'
undefined reference to 'source'
有人可以告诉我哪里出错了吗?
答案 0 :(得分:1)
您的编译命令行是什么样的?
尝试:
cc -c station1.c -o station1.o
cc -c source.c -o source.o
cc -o a.out station1.o source.o
前两个自己编译文件 并将结果放在.o文件中。
最后一行将.o文件合并到一个名为'a.out'的可执行文件中。
答案 1 :(得分:0)
当我们对任何变量使用extern修饰符时,它只是声明,即没有为这些变量分配内存。因此,在您的情况下,编译器显示错误未知符号源&amp; desti。要定义变量,即为外部变量分配内存,必须初始化变量。
初始化source.c中的变量
或其他方式是使用组合目标文件
进行编译gcc -c source.c station1.c -Isource.h