C: 使用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;
}

为什么?

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

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

-c标志指示编译器不要链接。为了链接包含config的对象文件,此时需要可用。

相关内容

  • 没有找到相关文章

最新更新