C语言 关于头文件的知识

头文件应该写什么:

	1、头文件卫士
	2、宏常量、宏函数
	3、结构、联合、枚举的设计
	4、变量、函数的声明
	5、static函数的实现

预处理指令:

在C语言中以#开头的语句都叫做预处理指令,因为这些不是标准的C代码,
不能被编译器直接编译,需要一段程序把它翻译成标准的C代码,
负责翻译在程序叫预处理器,翻译的过程叫预处理。

gcc -E code.c 把预处理的结果显示在终端上。
gcc -E code.c -o code.i 把预处理的结果存储到文件中。
	-o 为执行结果重命名

1、文件包含

	#include<> 从系统指定的路径加载头文件
	#include"" 先从当前路径加载头文件,如果没有再从系统指定的路径加载头文件。
	操作系统通过设置环境变量来指定加载头文件的路径
	-I路径 编译时指定加载头文件的路径

2、头文件卫士,防止头文件被重复包含

	#ifndef FILE_H
	#define FILE_H
	......
	#endif//FILE_H
	a.h b.h c.h
	b.h 包含 a.h c.h包含a.h再包含b.h 这样a.h中的内存在c.h中就有了两人份,
	在而头文件卫士可以解决这种问题。
	
	注意:头文件卫士不能解决循环包含的问题(a.h包含b.h,而b.h又包含a.h),
	解决方法是把a.h和b.h共用的内存提出来再写一个c.h,然后a.h和b.h都包含c.h。

3、宏定义

	单纯宏 #define NAME 可以配合头文件卫士,条件编译使用。
	
	宏常量 #define  PI 3.14 
		预处理器会把代码中的所有宏名替换成它后面的数字。
		好处:
			1、比用变量安全性高。
			2、比直接使用数据的扩展性强。
			3、可以为数据取一个有意义的名字,提高可读性。
		注意:定义宏时不带分号,一般宏名都全部大定。
	

	
	宏函数 #define SUM(a,b) a+b+b+a
		带参数的宏,并不是真正的函数,只是使用样式与函数一样。
		其实就把一个复杂的公式抽象成一个像函数一样的宏。
		如果宏函数的内容太长可以使用大括号,但不能换行(可以使用续行符\)。
		优点:
			1、方便使用。
			2、速度快(没有进行参数传递、压栈、出栈、释放栈的过程)。
			3、类型通用,只有极精简的代码段才使用
		缺点:
			1、不会对参数进行类型检查,安全性差。
			2、没有返回值,只用一个运算结果,因此处理不了很复杂的业务逻辑。
			3、过多使用会增加代码段人冗余。
		注意:二义性,调用宏函数时不要使用自变运算符。
		

	预定义的宏:
		__DATE__	//日期		
		__TIME__	//时间
		__func__			
		__FUNCTION__//函数名
		__FILENAME__//文件名
		__LINE__	//行号

4、条件编译

	#if/#elif/#else/#endif  #ifndef #ifdef
	C语言中的if/else是根据条件决定代码是否执行。
	而预处理的#if#else根据条件决定代码是否生成,这样可以减小代码段。
	#if 0 #endif可以对代码进行注释。
	// 不通用
	/* 不能嵌套 */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值