0

来源.c ::

    int source=0;
    int desti=0;
    char str[50]="";

来源.h::

    extern int source;
    extern int desti;
    extern char str[50];

站1.c

    #include"source.h"
    #include<stdio.h>
    main()
    {      
      printf("%d  %d",source,desti);
    }

当我编译 station1.c 时,出现以下错误:

undefined reference to 'desti'
undefined reference to 'source'

谁能告诉我哪里出错了?

4

2 回答 2

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”的可执行文件。

于 2013-09-29T15:03:16.903 回答
0

当我们对任何变量使用 extern 修饰符时,它只是声明,即没有为这些变量分配内存。因此,在您的情况下,编译器显示错误未知符号源和目标。要定义变量,即为外部变量分配内存,必须初始化变量。

初始化 source.c 中的变量

或者另一种方法是结合目标文件进行编译

gcc -c source.c station1.c -Isource.h

于 2013-09-29T15:08:46.440 回答