【发布时间】:2014-11-20 22:48:55
【问题描述】:
这些是我的代码文件:
header.h
#ifndef HEADER_H
#define HEADER_H
extern int bar;
#endif
foo.c
#include <stdio.h>
#include "header.h"
void foo(void) {
printf("foo: bar = %d\n", bar);
printf("foo: ++bar = %d\n", ++bar);
}
main.c
#include <stdio.h>
#include "header.h"
int main(void) {
int bar=0;
printf("main: bar = %d\n", bar);
printf("main: ++bar = %d\n", bar);
foo();
return 0;
}
当我尝试在 Ubuntu 中编译它们时:
gcc -c foo.c
gcc main.c foo.o -o program
我从链接器收到此错误:
/tmp/ccWHhwtm.o: In function `foo':
foo.c:(.text+0x6): undefined reference to `bar'
foo.c:(.text+0x1d): undefined reference to `bar'
foo.c:(.text+0x26): undefined reference to `bar'
foo.c:(.text+0x2c): undefined reference to `bar'
collect2: error: ld returned 1 exit status
正如我从这里其他已回答的问题中看到的那样,为了将全局变量共享给多个文件,您只需使用 extern 关键字在头文件中声明变量并在 .c 代码。
这就是我在这里所做的,但我得到了这个错误。
发生了什么?
【问题讨论】:
标签: c header global-variables extern