c语言头文件怎么写?我一直有这样的疑问,但是也一直没去问问到底咋回事;所以今天一定要把它弄明白!
其实学会写头文件之后可以为我们省去不少事情,可以避免书写大量的重复代码、有利于整理思路、使代码脉络更加清晰...
总之,好处多多学起来还不难就对了,还在等什么快来看看吧!
首先,我们要建一个头文件,命名为abc.h
然后就是内容了,其大致格式如下:
#ifndef __ABC_H__  //ifndef 实际上就是“if not define”  如果没有定义 
#define __ABC_H__
//以上是为了防止头文件被多次包含,可以省略 但最好有
//后面的文件名可以随意  但必须是大写+下滑线形式  还要保证名字唯一  所以这里建议是文件名的大写形式 
/*-------------[将要写入的代码]--------------*/ 
//以下是头文件,可有可无
#include <math.h>
//以下是宏定义,可有可无
#define MAX 100
#define MIN 0
//以下是结构声明,可有可无
typedef struct{
int a;
}ABC;
//以下是函数声明,可有可无
void abcfun(int a,int b);
//以下是函数定义,可有可无
uint add(uchar a, uchar b)
{
return a+b;
}
...
/*----------------------------------------------*/
#endif   //这里与上面的 #ifndef 是一对预编译
在c语言中头文件的作用是什么?
1,头文件可以定义所用的函数列表,方便查阅你可以调用的函数;
2,头文件可以定义很多宏定义,就是一些全局静态变量的定义,在这样的情况下,只要修改头文件的内容,程序就可以做相应的修改,不用亲自跑到繁琐的代码内去搜索。
3,头文件只是声明,不占内存空间,要知道其执行过程,要看你头文件所申明的函数是在哪个.c文件里定义的,才知道。
4,他并不是C自带的,可以不用。
5,调用了头文件,就等于赋予了调用某些函数的权限,如果你要算一个数的N次方,就要调用Pow()函数,而这个函数是定义在math.c里面的,要用这个函数,就必需调用math.h这个头文件。
6,在嵌入式开发中,我们可以试着将那些固定的初始化操作,全部扔进头文件中,然后随心所欲的调用它们。
C语言头文件中,下划线具体是什么意思?请问有没有高手指点一下?
下划线没有什何特别的意思,就是一个变量的一部分,就是你定义char str[10],char _str[10],他们俩是不同的变量名,然后都是一个字符串变量,一般头文件里或者宏定义都在变量前加一个下划线,这都是习惯问题,以示和普通函数里变量的区别,
学C的时候老师好像说过,系统自己的变量一般都以下划线开头,以示区分。
#If define, #ifdef(#ifndef), #else, #endif, #if等都属于 预处理条件编译的命令。 预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。 说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。    
1、   先来看一下,一个简单的应用,就是在头文件中使用。
#ifndef  
#define
[将要写入的代码]
#endif  
这三条指令。头件的中的#ifndef(if not define),这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。怎么办?
还是把头文件的内容都放在 #ifndef 和 #endif 中吧。不管你的头文件会不会被多个文件引用,你都要加上这个,以防万一嘛!
所以一般格式是这样的:
#ifndef <标识>
#define <标识>
[将要写入的代码]
#endif
<标识>在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:delay.h
#ifndef _DELAY_H_
#define _DELAY_H_
[将要写入的代码]
#endif
这一个在一般的小型程序中经常用到,在做单片机的的程序时,经常把一些可以独立的模块写成头文件,方便程序的阅读和移植。
我看了老长时间的书,终于明白为什么是:
#ifndef _DELAY_H_
#define _DELAY_H_ 
而不是:   
#ifndef DELAY.H  
#define DELAY.H 
因为,后者,定义一个名称,是用于一个程序中或者头文件中的,名称定义
前者,是关于头文件包含的,不是名称定义的。用下划线代替“.”,是没有办法的办法,只有这样才能防止混乱。
前者的意思是:如果没有包含了这个头文件,就包含它。
后者的意思是:如果没有定义这个名称,就定义它。
其实就是换一种写法 以区分两种意思。 两者是不一样的意思。
摘自那本两个老外写的经典权威《C程序设计语言(第二版)》 第2章 2.1变量名该节
“……名字是由字母和数字组成的序列,但其第一个字符必须是字母。下划线被看做是字母……由于库例程的名字通常以下划线开头,因此变量名不要以下划线开头……”
首先是楼主那几个函数是系统文件自代函数,所以一般系统变量或函数名前会加上下划线以示区分    .  和头文件的下划线是 两码事
 

转载于:https://www.cnblogs.com/gaosheng-221/p/6193649.html

C语言中头文件怎么写?(本文来源网络,由黑乌鸦进一步完善)相关推荐

  1. C语言中头文件和源文件的注意事项

    C语言中头文件和源文件的注意事项 文章目录 C语言中头文件和源文件的注意事项 0.前言 1.实现步骤 1.1 拆分前 1.2 拆分后 2.总结 2.1头文件内容 2.2 源文件(.c)内容 2.3 函 ...

  2. C语言中头文件包含的处理原则

    很多事不深入以为自己懂了,但真正用到项目上,才发现了问题.曾以为自己写C语言已经轻车熟路了,特别是对软件文件的工程管理上,因为心里对自己的代码编写风格还是有自信的.(毕竟刚毕业时老大对我最初的训练就是 ...

  3. 详解C语言中头文件的作用

    大家好,先做个自我介绍,我是天蓬,欢迎阅读本篇博文. 由于本人理解能力不是很好,阅读他人文章时,常常看得晕头晕脑,这让我很是头疼,我想,世界上一定还有和我一样的人(哈哈,不是说你么笨哦).所以,我将会 ...

  4. C语言中头文件的使用

    标准头文件写法 先了解一下什么是条件编译 //条件编译结构 #if 0或1 //代码块 #endif 那如何使用呢? #if 1 //值为1则编译框中代码 int main(int argc, con ...

  5. C语言中头文件和源文件的关系

    答案 #include预处理实际上就是完成了一个"复制代码并插入"的工作! 编译器工作阶段 1.预处理 2.词法和语法分析 3.编译(高级语言--汇编语言--二进制码--目标文件. ...

  6. c语言中ndigit用法,求C语言中头文件及函数的含意的总分类

    ALLOC.H 说明内存管理函数(分配.释放等). ASSERT.H 定义 assert调试宏. BIOS.H 说明调用IBM-PC ROM BIOS子程序的各个函数. CONIO. H 说明调用DO ...

  7. c语言中错误为ffblk未定义,C语言中头文件及函数的含意的总分类

    ALLOC.H 说明内存管理函数(分配.释放等). ASSERT.H 定义assert调试宏. BIOS.H 说明调用IBM-PC ROM BIOS子程序的各个函数. CONIO.H 说明调用DOS控 ...

  8. c语言二叉树的头文件叫什么,西安交大朱站立数据结构——使用C语言》头文件系列——二叉树.doc...

    西安交大朱站立数据结构--使用C语言>头文件系列--二叉树 本文为二叉链存储结构的二叉树操作实现,实现了二叉树的定义.插入数据.删除数据.撤销以及二叉树的打印.前序遍历.中序遍历.后序遍历等.本 ...

  9. 【C语言复习】C语言中的文件操作

    C语言中的文件操作 写在前面 文件操作 什么是文件 文件的分类 文件名 文件的操作 文件指针 文件的打开和关闭 文件的顺序读写 文件的随机读写 fseek ftell rewind feof 写在前面 ...

最新文章

  1. 美多商城之用户注册(展示用户注册页面)
  2. 备战实习求职的一些感想(已拿阿里offer)
  3. 「新房+电商+大数据」如何塑造满意度达 99.8% 的万亿市场领路人?
  4. Tomcat连接池配置
  5. 数据结构及算法学习——写在前面的话
  6. c语言中常量有何作用,C语言const的用法详解,C语言常量定义详解
  7. 模块 python_Python入门基础:模块基础
  8. React Native顶|底部导航使用小技巧
  9. 02-07 Python库-pytest
  10. python导入类有红线_解决Python中导入自己写的类,被划红线,但不影响执行的问题...
  11. sd卡、U盘作为启动盘后容量变小处理方法
  12. java猜数字1到100_Java实现简单猜数字小游戏
  13. Q1财报蛋壳公寓再亏损:盈利死穴如何破?
  14. 如何在word中的方框中打勾
  15. FLUENT操作--VOF模型局部初始化的TUI命令
  16. Xilinx推荐使用ODDR原语输出高质量时钟
  17. Point Cloud Transformer的pytorch代码实现
  18. freemarker截取字符串subString()
  19. 天下事以难而废者十之一,以惰而废者十之九。(南北朝 颜之推 《颜氏家训》)...
  20. 贝加莱 C语言编程,贝加莱可编程计算机控制器PCC系列

热门文章

  1. 基于php汽车销售可视化管理系统
  2. 静态京东页面(代码)
  3. Python入门习题大全——名言2
  4. 图书馆管理软件开发 软件需求参考
  5. 汇聚全球近七千名选手 世界机器人大赛总决赛开幕
  6. 献给新手(950使用技巧汇编,不断更新)
  7. 沉船会有什么_深海探险公司OceanGate与NASA合作制造潜艇,探访泰塔尼克号沉船...
  8. uboot移植到mini2440
  9. 洛谷 P3674 小清新人渣的本愿 [莫队 bitset]
  10. 户外服装品牌TheNorthFace遭遇撞库 撞库究竟如何成功窃取账户信息