C:使用extern时对变量的未定义引用

时间:2014-04-29 14:19:06

标签: c global-variables extern

我尝试声明一个全局变量config

//general.h

struct config_t {
    int num;
};

extern struct config_t config;  //The global variable

然后我在general.c中定义配置变量:

//general.c
#include "general.h"

struct config_t config = {
    num = 5;
};

但是,当我尝试使用全局变量' config'在我的主要功能中,我收到错误:

undefined reference to `config':

主程序:

//main.c
#include "general.h"

main() {
    config.num = 10;
}

为什么?

1 个答案:

答案 0 :(得分:8)

这看起来像链接器错误。您需要确保正确链接您的可执行文件:

cc -c general.c
cc -c main.c
cc general.o main.o
./a.out

-c标志指示您的编译器尚未链接。为了链接包含config的目标文件,需要在那时提供。