【C语言基础补充7】使用预处理让你的代码不再臃肿
引言
当我们开始接触一系列的工程项目后,很有可能会接触一个程序有几百行,甚至几千行的代码。这样的程序结构是比较复杂的,也是比较臃肿的,我个人比较喜欢苗条的东西,代码也不例外。因此,这里使用预处理头文件的方法,给大家介绍一下如何让代码不再臃肿。
举例分析
我们首先举个例子,有一个这样的main.c函数:
从上面的例子中可以看到,包含的头文件很多,而且程序自身用到的函数也非常多,声明语句也很多。甚至,在我们工作的时候,可能还会遇到比上面例子多得多的代码。
这样的程序容易让人一看就头晕脑胀,很难受。因此,我们要想办法将他们分开:
- 将头文件,函数声明等全部打包放入一个自定义的头文件之中:
- 将函数打包成一个.c文件:
- 调整Main.c函数,并且包含自己的头文件:
- 注意!分开的文件最好要在同一个目录之中
然后使用gcc将所有.c文件一起编译
总结自定义的头文件能放什么
- 函数声明。
- 结构体、联合体、枚举列表的定义。
- 其他头文件。
- 宏定义。
- 特殊函数的定义:内联函数、static函数的定义
头文件的编写格式:
假设头文件名字为:myhead.h
#ifndef _MYHEAD_H_
#define _MYHEAD_H_(头文件内容...)#endif
#ifndef
判断是否已经定义该头文件,如果条件成立,则定义该头文件,若不成立则不定义。
头文件的搜索范围:
在.c语言中包含头文件中,我们包含头文件应该要注意以下:
- 头文件尖括号:
#include <xxx.h>
直接到系统标准头文件路径寻找 - 头文件双引号:
#include "xxx.h"
先在本目录寻找该头文件,再到系统标准头文件路径寻找。
原则:
如果包含的是系统的头文件,应该使用尖括号<>。
如果包含的是自己定义的头文件,应该使用双引号“”。
【C语言基础补充7】使用预处理让你的代码不再臃肿相关推荐
- C语言基础:格式化输出带符号的数字的代码
将开发过程中较好的代码备份一次,如下的代码段是关于C语言基础:格式化输出带符号的数字的代码,应该对各朋友有较大用处. #include <stdio.h>int main (){int i ...
- C语言基础:时间转换成字符串 strftime的代码
将内容过程中经常用的一些内容段做个记录,下边内容段是关于C语言基础:时间转换成字符串 strftime的内容,希望能对大伙有一些用处. #include <stdio.h> #includ ...
- C语言基础篇,什么是封装,附代码!
封装就是把数据和函数打包到一个类里面,其实大部分C语言编程者都已近接触过了. C 标准库中的 fopen(), fclose(), fread(), fwrite()等函数的操作对象就是 FILE.数 ...
- c语言中shift f12组合建,C++学习1-(C语言基础、VS快捷键)
C语言基础复习 1.三码 正数: 3码合1 ,正数的反码/补码就是其本身 负数: 原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值 原码:11010101 负数的反码是在其原码的基础上 ...
- c语言怎么把一个整数挨挨挤挤,《C语言》课程PPT_第1章_C语言基础
C语言基础 第一章 传褪猿度历霞司腺娠详躁代升乍圃刷烘诧藩东兹淮驹耿游竿郝芽祖续憨荫 C语言 课程PPT 第1章 C语言基础 C语言 课程PPT 第1章 C语言基础 2 本章目标 命令 程序以及软件之 ...
- c语言中void delay0.5(),第5章补充 单片机C语言基础.ppt
第5章补充 单片机C语言基础.ppt 2.中断函数举例 例4-16 本例程序电路图可参考图4-1.下面的程序的功能是:对外部中断1中断次数计数,并送P0口显示. #include unsigned c ...
- ios c语言头文件,iOS开发 -- C语言基础12(预处理指令)
iOS开发 -- C语言基础12(预处理指令) 宏定义 预处理指令简介 1.C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源 ...
- C语言基础专题 - 预处理
C语言基础专题 - 预处理 本文介绍了C语言中预处理的相关概念 相关内容推荐阅读:C语言头文件引用 1.
- 软考-软件设计师 - 第2章 程序设计语言基础知识【附补充常考知识点】
本章导图: 2.1 程序设计语言概述 2.1.1 程序设计语言的基本概念 1 低级语言与高级语言 低级语言:机器语言.汇编语言 高级语言:面向各类应用的程序设计语言,如Java,C,C++,PHP,P ...
最新文章
- LNMP架构之PHP——MemCache对PHP页面的缓存加速优化
- 判断一个数是否是2的倍数----------面试算法
- linux搭建--DISPLAY环境变量问题(一)
- String类中的equals方法与Object类中的equals方法的不同点
- 模型的燃料,数据采样的秘密
- C++ bitset类
- 0423-mysql查询语句大全
- KPN iTV的敏捷转型之旅
- python正则表达式模块re
- ios android 通用字体,教你如何在iOS项目中设置各种字体
- struts2 获得前端数据:
- Unity官网中文API地址
- 连接linux工具Mtr,Mac、linux和windows mtr路径探测工具安装使用
- 计算长方体和四棱锥的表面积和体积(类的继承)python java
- win7系统老是弹窗怎么解决_Win7电脑右下角弹出广告如何解决?
- js实现图片跟随鼠标移动
- 用JS实现万年历效果,精!
- 80psi等于多少kpa_压力单位换算(如psi)
- 手把手教你做个AR涂涂乐
- linux具有写保护权限的文件,细说Linux权限