如果将所有的代码都写到一个文件中,当对于小项目来说不会有什么问题,但是当它一个很大的工程的时候,如果将所有代码都写到一个文件中,不但开发起来很困难,维护更是头疼,所以我们应该将代码按不同的功能分别建立相应的代码文件,下面我们将program.c的代码分成多个文件

 #include <stdio.h>

 int main(){
int n=;
int m=;
int result;
result=add(n,m);
printf("n+m=%i\n",result);
result=sub(n,m);
printf("n-m=%i\n",result);
return ;
} int add(int n,int m){
return n+m;
} int sub(int n,int m){
return n-m;
}

  首先,我们将功能代码放到另一个文件cal.c文件中

 #include "cal.h"

 int add(int n,int m){
return n+m;
} int sub(int n,int m){
return n-m;
}  

  然后将函数声明放在另一个文件cal.h头文件中

int add(int n,int m);
int sub(int n,int m);

  现在我们再来看主程序中该怎么去调用这些方法

 #include <stdio.h>
#include "cal.h" int main(){
int n=;
int m=;
int result;
result=add(n,m);
printf("n+m=%i\n",result);
result=sub(n,m);
printf("n-m=%i\n",result);
return ;
}

  只需在主程序文件开头处引用"cal.h"头文件就行,注意这里的cal.h头文件是用双引号而不是<>括号;

  通过双引号引用的头文件是程序的相对路径,而通过尖括号引用的是程序的绝对路径

  最后,我们来看看该如何编译多个文件的程序,其实和和编译单个文件没有多大区别,就是在gcc后面逐个添加c文件

aaarticlea/png;base64,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" alt="" />

C语言学习012:将代码文件分成多个文件的更多相关文章

  1. R语言学习笔记之: 论如何正确把EXCEL文件喂给R处理

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html ---- 前言: 应用背景兼吐槽 继续延续之前每个月至少一次更新博客,归纳总结学习心得好习惯. ...

  2. R语言学习笔记(十五):获取文件和目录信息

    file.info() 参数是表示文件名称的字符串向量,函数会给出每个文件的大小.创建时间.是否为目录等信息. > file.info("z.txt") size isdir ...

  3. 笨办法学习python3练习代码ex20.py 函数和文件

    注意,还要在python3,就是ex20.py的同目录里面直接创建一个ex20.txt的文件.里面至少要有三行内容 #函数和文件 #readline:只读取文本文件的一行 #seek(0):将读写位置 ...

  4. c语言学习之结构篇代码演示样例-输入n个同学的姓名,数学英语成绩,依照平均分从低到高排序并输出

    #include<stdio.h> void main(){ const int count = 5;//定义数量 struct student{ char name[80]; float ...

  5. HTML语言学习笔记(会更新)

    # HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...

  6. C语言学习008:标准错误

    在上一节中的数据文件中(C语言学习007:重定向标准输入和输出),如果文件中的数据包含非法数据,如何让程序显示一条错误的提示消息呢?就需要用到标准错误 #include <stdio.h> ...

  7. C# 好代码学习笔记(1):文件操作、读取文件、Debug/Trace 类、Conditional条件编译、CLS

    目录 1,文件操作 2,读取文件 3,Debug .Trace类 4,条件编译 5,MethodImpl 特性 5,CLSCompliantAttribute 6,必要时自定义类型别名 目录: 1,文 ...

  8. 一份关于Swift语言学习资源的整理文件

    一份关于Swift语言学习资源的整理文件     周银辉 在这里下载 https://github.com/ipader/SwiftGuide

  9. c语言学习之基础知识点介绍(十六):文件操作

    一.文件的分类 1.文本文件:打开之后能看得懂的文件 2.二进制文件:打开之后看不懂,类似乱码之类的文件(视频,音频打开之后,能看.听,是应为电脑中装有播放器,播放器中含有解码器). 二.操作文件的步 ...

随机推荐

  1. Java多线程2:Thread中的实例方法

    Thread类中的方法调用方式: 学习Thread类中的方法是学习多线程的第一步.在学习多线程之前特别提出一点,调用Thread中的方法的时候,在线程类中,有两种方式,一定要理解这两种方式的区别: 1 ...

  2. openwrt-智能路由器hack技术(2)---"网路信息监控和窃取"

    openwrt-智能路由器hack技术(2)---"网路信息监控和窃取" 1   导读 PS:之前写的一个文章,现在发现结构内容排版不是太好,导致阅读体验太差,影响传播和SEO,所 ...

  3. 冲刺阶段 day 9

    项目进展 昨天终于完成了教师部分的内容,今天我们又重新开始对之前系部设置不能实现的内容进行了编写,之前缺少删除和查询也做了补充,在与数据库的连接上也做了修改和更新. 存在问题 由于是之前遇到困难没做完 ...

  4. [ZigBee] 11、ZigBee之睡眠定时器二

    1.前言 上一节讲了Zigbee的睡眠定时器利用外部按键使系统从休眠态唤醒到工作态,其核心在于: 61 void SysPowerMode(uchar mode) 62 { 63 if(mode &g ...

  5. rsync permission denied created directories have no permissions

    这个问题坑了好几天 最后被此贴解决 http://stackoverflow.com/questions/5798807/rsync-permission-denied-created-directo ...

  6. spring源码分析(二)Aop

    创建日期:2016.08.19 修改日期:2016.08.20-2016.08.21 交流QQ:992591601 参考资料:<spring源码深度解析>.<spring技术内幕&g ...

  7. http流请求时,被请求站点HttpContext.Current为null?

    我负责运维一个短信接口站点sms.调用上游短信供应商下发短信后,他们会给我们推送发送报告.报告是类似DELIVRD.DI:9432这样的码.为了方便识别,系统里有一个报告码与其描述的关系,一开始是写死 ...

  8. Redis数据库的使用场景介绍(避免误用Redis)

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/122.html?1455854235 Redis 是目前 NoSQL 领域 ...

  9. PHPer书单

    想提升自己,还得多看书!多看书!多看书! 下面是我收集到的一些PHP程序员应该看得书单及在线教程,自己也没有全部看完.共勉吧! Github地址:https://github.com/52fhy/ph ...

  10. Mybatis逆向工程构建项目实例.

    2016/11/06更新: 因为有博友可能需要这份代码, 所以我就直接发到百度云上面和大家共享, 如果链接失效请大家留言提示即可.下载地址: http://pan.baidu.com/s/1i57E8 ...