2013-12-03 5 views
1

У меня возникли серьезные проблемы с получением глобальных переменных и функций в рамках программы. Я попытался определить мои функции/переменные в файлах .c, а затем объявить их (с ключевым словом extern в случае переменных) в заголовках, но как VC, так и GCC дают мне нерешенные условные/неопределенные ссылочные ошибки. Например:Внешние переменные в C

glob.c

#include "glob.h" 

int i = 5; 

char get_letter() 
{ 
    return 'A'; 
} 

glob.h

#ifndef GLOB_H 
#define GLOB_H 

extern int i; 

char get_letter(); 

#endif 

main.c

#include <stdio.h> 
#include "glob.h" 

int main() 
{ 
    printf("%u\t%c\n", i, get_letter()); 
} 

Это чувствует себя излишним спросить, но он смотрит на меня, как я «Пробовал решения, представленные в существующих ресурсах, и я все еще получаю ошибки. Как я должен раз и навсегда определять глобальные переменные в C?

+0

Что такое * точное * сообщение об ошибке? –

+3

Вам нужно будет скомпилировать как main.c, так и glob.c, а затем соединить их вместе. Если вы скомпилируете только основной файл в исполняемый файл, у него не будет источника для этого 'i' var, потому что вы никогда не связывали его с glob.o –

ответ

9

Возможно, вы скомпилируете его неправильно, так как он выглядит нормально. При компиляции нескольких источников, что нужно сделать

gcc main.c glob.c -o program 

Или компилировать отдельно, а затем связать

gcc -c main.c 
gcc -c glob.c 
gcc main.o glob.o -o program 
Смежные вопросы