Question

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?

Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top