C语言预处理之多文件编译

建立一个multi_files文件夹,然后在该文件下新建main.c文件夹,新建header,source,output文件夹。
它的目录结构如下所示:
C语言预处理之多文件编译_第1张图片
C语言预处理之多文件编译_第2张图片
C语言预处理之多文件编译_第3张图片
在header文件夹下面新建两个.h文件,分别是max.h test.h

test.h

#ifndef _TEST_H_
#define _TEST_H_
//不管这个头文件被包含了多少次,只进行一次编译解析
#pragma once
#include 
void test_print_message();

#endif

mac.h

#ifndef _MAX_H_
#define _MAX_H_
int max_int_two(int a,int b);
#endif

test.c

#include 
#include "../header/test.h"

void test_print_message()
{
    printf("zhelishi\n");
}

max.c

#include "../header/max.h"
int max_int_two(int a,int b)
{
    return a>b?a:b;
}

main.c

#include
#include "header/test.h"
#include "header/max.h"


//不管编译的文件有多少个,一个C程序只允许出现一个main函数,所以在test或者max的C文件中是不能出现main函数的
/*
在链接过程中,需要链接多个目标文件(.o文件)
函数虽然定义了,但是找不到其实现,所以错误
每一个源文件都会生成为一个目标文件,所以编译过程中要加进来   gcc main.c cource/test.c -o output/result

*/
int main(int argc,char const *argv[])
{
    test_print_message();
    int res=max_int_two(99,999);
    printf("%d\n",res);

    return 0;
}

在编译的时候因为一个c文件指挥编译一次,所以需要 gcc 后面加三个.c文件

gcc main.c source/test.c -o outp source/max.c -o output/result

这样子比较麻烦,可以编写一个sh脚本来执行
build.sh:

gcc main.c source/test.c -o outp source/max.c -o output/result

然后在终端输入 sh build.sh
也可以把build.sh转换为一个可执行文件 在终端输入:

chmod +x build.sh

然后就可以直接在终端输入 ./build.sh

你可能感兴趣的:(C语言预处理之多文件编译)