2013-09-29 3 views
0

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

ошибка компиляции или ошибка компоновщика? – Dukeling

+0

ошибка связи. –

ответ

1

Как выглядела ваша командная строка компиляции?

Try:

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'.

0

Когда мы используем модификатор extern с любыми переменными, это только объявление, то есть память не выделяется для этой переменной. Следовательно, в вашем casecompiler отображается ошибка неизвестного источника символов & desti. Чтобы определить переменную, то есть выделить память для внешних переменных, необходимо инициализировать переменные.

инициализировать переменные в source.c

или другой способ заключается в компиляции с объединением объектный файл

GCC -c source.c station1.c -Isource.h