要在此处设置场景 - 我有2个.c文件,称之为a.c
和b.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个外部陈述。
答案 0 :(得分:0)
继续并在两个文件中包含ext的标头。将定义和初始化放在拥有该变量的文件中。这没关系:
extern int aaa;
int aaa = 1;