如何将.c文件优雅地包含在另一个.c文件中

时间:2012-08-23 20:03:21

标签: linker include makefile header-files

我有一个子文件夹1 / Submain.c

{
  //initialize statements
    CallFunction1();
}

subfolder2 / Submain.c

{
  //initialize statements
    CallFunction2();
}

等等。

MainFolder中有一个make文件,包含所有子文件夹。像子文件夹1子文件夹2等。主文件夹也有mainfile.h,其中包含所有函数定义(如{{ 1}}和CallFunction1)。我通过实践知道,在CallFunction2文件中使用函数定义并不是一个好主意。所以我想创建一个包含所有函数声明(如接口)的新.h文件,并在子文件夹中包含此.h。但我不知道该怎么做。有人可以请帮助。所以主要的是我不知道如何链接新的.h和.C

这是(BIGDIR / tests / Mainfolder / Subfolder1)中的make文件


.h

这是SubMain.c

include $(BIGDIR)/tests/make/Makefile.defs

TEST_NAME := test1

LCINCS += -I$(BIGDIR)/../tests/Mainfolder

C_FILES := SubMain.c

include $(BIGDIR)/tests/make/Makefile.rules

我想以这样的方式修改它 在#include "Main.h" { // do things CallFunction1(); //this function is defined in Main.h which is in Mainfolder } 我可以

subfolder1/submain.c

这样#include "NewMain.h" 具有所有函数声明和

NewMain.h仍然具有所有功能定义(旧版main.c ==> Main.h)。

Mainfolder中Makefile的当前内容为:

NewMain.c

PS:我无权更改规则。但我可以在子文件夹中使用Main Makefile和Makefile。

1 个答案:

答案 0 :(得分:0)

每个文件(编译单元)单独编译(到.o文件中),然后将它们链接在一起。头文件(new.h)没有链接,它们用于原型检查。

生成文件:

sources=subfolder1/main.c subfolder2/main.c
objects=$(sources:.c=.o)

all:
   gcc $(objects) -o final_binary

%.o: %.c
   gcc -c $< -o $@