Заголовочный файл и ключевое слово extern
У меня много проблем с использованием переменных переменных и заголовочных файлов. Я прочитал разделы книг и искал в Интернете в течение нескольких часов, но я не смог понять. Любая помощь в понимании этой проблемы будет принята с благодарностью. Ниже приведен код и ошибка, когда я пытаюсь скомпилировать
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sample.h"
int main()
{
int i;
int gI = 0;
double recv;
i = 10;
gI = i;
recv = AnotherFunc();
return 0;
}
И образец.h является следующим
#ifndef SAMPLE
#define SAMPLE
extern int gI;
extern double AnotherFunc();
#endif
А другой это функция
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sample.h"
double AnotherFunc()
{
double someVar;
int test;
test = gI;
someVar = 10.0;
return someVar;
}
Когда я компилирую следующим образом, я получаю следующие ошибки, которые я не понимаю, почему я получаю эти ошибки. У sample.h есть объявление переменной, и оно должно быть видно в AnotherFunc.
gcc -Wall -ansi -pedantic -c Main.c AnotherFunc.c
gcc Main.o AnotherFunc.o -o test
AnotherFunc.o: In function `AnotherFunc':
AnotherFunc.c:(.text+0x6): undefined reference to `gI'
collect2: ld returned 1 exit status
Я только добавил int gI = 0; потому что я хотел определить это. Если я изменяю код следующим образом, я получаю ошибку в основном. Пожалуйста, смотрите ниже.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sample.h"
int main(int argc, char *argv[])
{
int i;
double recv;
i = 10;
gI = i;
recv = AnotherFunc();
return 0;
}
gcc -Wall -Wstrict-prototypes -ansi -pedantic -c Main.c AnotherFunc.c
gcc Main.o AnotherFunc.o -o test
Main.o: In function `main':
Main.c:(.text+0x1b): undefined reference to `gI'
AnotherFunc.o: In function `AnotherFunc':
AnotherFunc.c:(.text+0x6): undefined reference to `gI'
collect2: ld returned 1 exit status