C: undefined reference to a variable when using extern
24,577
This looks like a linker error. You need to make sure you link your executable properly:
cc -c general.c
cc -c main.c
cc general.o main.o
./a.out
The -c
flag instructs your compiler not to link yet. In order to link the object file containing config
needs to be available at that moment.
Author by
Halona
Updated on July 10, 2022Comments
-
Halona almost 2 years
I try to declare a global variable
config
://general.h struct config_t { int num; }; extern struct config_t config; //The global variable
Then I define config variable in
general.c
://general.c #include "general.h" struct config_t config = { num = 5; };
But, when I try to use the global variable 'config' in my main function, I get the error:
undefined reference to `config':
Main program:
//main.c #include "general.h" main() { config.num = 10; }
Why is it?