如果将所有的代码都写到一个文件中,当对于小项目来说不会有什么问题,但是当它一个很大的工程的时候,如果将所有代码都写到一个文件中,不但开发起来很困难,维护更是头疼,所以我们应该将代码按不同的功能分别建立相应的代码文件,下面我们将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. JavaScript中需要注意的几个问题

    JavaScript是一门弱语言,她使用起来不像C/C++那样有十分繁琐的内存管理.类型定义等,所以学习JavaScript的门槛相对来说也比较低.门槛低并不意味着这门语言很简单,我们在使用的时候会遇 ...

  2. [nRF51822] 2、D-BUG之诗

    4线SPI彩屏局部刷屏偏移解决 ——原来我早已经在成功的旁边了 最近在研究用低速.低RAM的单片机来驱动小LCD或TFT彩屏实现动画效果 首先我用一个16MHz晶振的m0内核的8位单片机nRF5182 ...

  3. 【转】优化Web程序的最佳实践

    自动排版有点乱,看着蛋疼,建议下载中文PDF版阅读或阅读英文原文. Yahoo!的Exceptional Performance团队为改善Web性能带来最佳实践.他们为此进行了 一系列的实验.开发了各 ...

  4. 【重要更新】Senparc.Weixin SDK v4.3.3升级说明

    为了更好地适应微信越来越快的API更新速度和越来越多的API数量,本次Senparc.Weixin.dll v4.3.3对一些通用功能进行了深度的重构. 本次更新同时影响以下所有Senparc.Wei ...

  5. Java连接Oracle数据库开发银行管理系统【三、实现篇】

    说明:里面的主要代码都加的有注释部分,所以代码显得很长,如果有错误的地方,谢谢指出. 注意需要导入数据库jar包 ------------------------------------------- ...

  6. 知方可补不足~sqlserver中触发器的使用

    回到目录 触发器在过去的10年中,即存储过程和ado.net称霸江湖期间是那么的重要,而现在,trigger显得不是那么必要的,我们很少将复杂的业务写在SQL里,当然也会没有机会写到trigger里了 ...

  7. 你可能不知道console强大

    写在前面 大家都有用过各种类型的浏览器,每种浏览器都有自己的特色,本人拙见,在我用过的浏览器当中,我是最喜欢Chrome的,因为它对于调试脚本及前端设计调试都有它比其它浏览器有过之而无不及的地方.可能 ...

  8. 移动端BUG汇总

    position:fixed问题 固定定位到底部会把最后一个元素盖住 你会发现最后一个字被盖住了,并且还滚动不下去. 解决方法: 给后一个元素添加一个高度,或者给body加margin-bottom ...

  9. 深入理解javascript函数系列第二篇——函数参数

    × 目录 [1]arguments [2]内部属性 [3]函数重载[4]参数传递 前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传 ...

  10. backbone库学习-Router

    backbone库的结构http://www.cnblogs.com/nuysoft/archive/2012/03/19/2404274.html 本文的例子来自http://blog.csdn.n ...