C语言多文件编译,你学废了没?

C语言多文件编译详解


一个大型工程要分割成很多文件,让整个开发框架更加清晰,提高开发效率,对于刚学习C语言的童鞋们(我也是),平时我们写一个程序就一个.c文件,长篇大论,思维混乱,显得不太专业,那么我们就需要用到多个文件来分类存放,头文件、源文件等,想让各个文件联动,然后跑起来就需要进行多文件编译处理。

首先,我们新建一个工程文件夹命名为:mutil_file

mkidr mutil_file

再mutil_file文件夹下
新建头文件夹heander,再新建一个test.h和max.h文件

mkidr heander
cd heander
touch test.h
touch max.h

新建源文件夹source,再新建test.c和max.c文件

mkdir source
cd source
touch test.c
touch max.c

用来存放执行程序的output文件夹

mkdir output

主函数main.c文件

touch main.c

tree命令~目录结构如下
在这里插入图片描述

在test.h文件写入以一下内容

/*	#ifndef _TEST_H_ //这是个函数原型   
  	#define _TEST_H_

	#endif	
*/
#ifndef _TEST_H_
#define _TEST_H_

#pragma once//对<sttdio.h>头文件引用限制,不管此头文件会被引用多少次,只需定义一次
#include <stdio.h>
void test_print_message();//定义了一个输出字符函数

#endif

在max.h文件写入以下内容

#ifndef _MAX_H_
#define _MAX_H_

int max_int_two(int a, int b);//定义了一个进行数值交换的函数

#endif

在test.c文件写入以下内容

#include "../heander/test.h"
void test_print_message()
{
    printf("test test test");
}

在max.c文件写入以下内容

#include "../heander/max.h"

int max_int_two(int a, int b)
{

    return a > b ? a : b;
}

到这里,很多小伙伴就会有疑问了
为什么是用“ ”,而不是< >?
为什么要加上路径不加上路径会怎么样?

1、<> 尖括号从系统根目录进行查找相对应的头文件
echo $PATH
查看环境变量位置
cp test_heander.h /usr/local/bin/复制.h文件到环境变量中还是无法解决

2、" "双引号先从当前源文件查找,如果查找不到,再到系统目录查找
需要注意的是:如果文件和源文件不在同一目录,需要引用相对路径

问题解决了!

接下来在在main.c文件写入以下内容

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

int main(int argc, char **argv)
{

    test_print_message();
    int res = max_int_two(99, 1000);
    printf("%d", res);
    return 0;
}

在mutil_file目录下进行编译处理
gcc main.c source/test.c source/max.c -o output/result
再output目录下就会生成一个result执行文件

cd output
./resule

每一次编译执行都要输入这么长的命令,会不会太繁琐了?
所以呢,为了执行方便,我们可以做一个脚本

code build.sh

将gcc main.c source/test.c source/max.c -o output/result写进去然后保存退出
执行命令:sh build.sh这样就显得比较ok一些!
或者再加一步,输入命令chmod +x build.sh
执行命令:./build.sh也可以
sh build以及./build.sh就直接替换了命令:gcc main.c source/test.c source/max.c -o output/result

然后./resule就可以了

你学废了没?

这着教程只是一个示范,小编也是刚刚学会,有什么写得不对的地方多多包涵,大家可以举一反三,来应用,当我们开发一个大项目的时候,肯定是一个团队再做这个事情,多个文件处理就会显得很重要了。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值