【问题标题】:Extern variables in CC中的外部变量
【发布时间】:2013-12-03 16:25:29
【问题描述】:

我在让程序范围的全局变量和函数正常工作时遇到了很大的麻烦。我尝试在 .c 文件中定义我的函数/变量,然后在标头中声明它们(在变量的情况下使用 extern 关键字),但是 VC 和 GCC 都给了我未解决的符号/未定义的引用错误。例如:

glob.c

#include "glob.h"

int i = 5;

char get_letter()
{
    return 'A';
}

glob.h

#ifndef GLOB_H
#define GLOB_H

extern int i;

char get_letter();

#endif

main.c

#include <stdio.h>
#include "glob.h"

int main()
{
    printf("%u\t%c\n", i, get_letter());
}

这个问题问起来有点多余,但在我看来,我已经尝试了现有资源中提供的解决方案,但仍然出现错误。我应该如何一劳永逸地在 C 中定义全局变量?

【问题讨论】:

  • exact 错误信息是什么?
  • 您需要编译 main.c 和 glob.c,然后将它们链接在一起。如果您仅将 main 编译为可执行文件,则它不会有该 i var 的源代码,因为您从未将它与 glob.o 链接起来

标签: c


【解决方案1】:

你可能编译错了,因为它看起来没问题。编译多个源时你需要做的

gcc main.c glob.c -o program

或者单独编译再链接

gcc -c main.c
gcc -c glob.c
gcc main.o glob.o -o program

【讨论】:

    猜你喜欢
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多