无法找出共享变量的错误

时间:2013-09-29 14:56:13

标签: c variables shared

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'

有人可以告诉我哪里出错了吗?

2 个答案:

答案 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