无法从另一个.c文件访问一个.c文件中的全局变量

时间:2015-09-30 22:36:39

标签: c global

要在此处设置场景 - 我有2个.c文件,称之为a.cb.c

然后我为每个.c文件提供了2个头文件,a.h(包含所有函数原型,所有全局变量都声明为extern type name;),b.h只有函数b.c的原型b.c不包含全局变量。

我想在a.c中访问b.c个全局变量,因此我在#include "a.h"中添加了一个声明b.c

唯一的问题是,我仍然无法在a.c中访问b.c个全局变量,例如,如果我想要打印。我在int i;中有一个全局变量a.c,如果我这样做:

i = 5; printf("%d", i);中的b.c,我收到错误消息,说明变量i尚未声明。我做错了什么?

代码:

交流转换器:

#include "b.h"

int i;

int main() {
    executeMethod();
    return 0;
}

b.c:

#include "a.h"
void executeMethod() {
    i = 10;
    printf("%d", i);

A.H:

int main();
extern int i;

b.h:

void executeMethod();

生成文件:

CFLAGS = -Wall -g

all: main

main: a.c b.c a.h b.h
    gcc  $(CFLAGS) -o main a.c b.c a.h b.h

clean:
    rm -f main

还试过没有makefile:     gcc -o main a.c b.c a.h b.h

感谢。

编辑:如果我在extern int i;文件上定义b.c,但是我说有60个变量,我希望它们在header.h文件中只有{{1}而不是写50个外部陈述。

1 个答案:

答案 0 :(得分:0)

继续并在两个文件中包含ext的标头。将定义和初始化放在拥有该变量的文件中。这没关系:

extern int aaa;
int aaa = 1;