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?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With