C语言预处理指令

预处理指令

在C语言中以#开头的语句都叫做预处理指令,因为这些不是标注你的C代码,不能被编译器直接编译,需要一段程序把它翻译成标准的C代码,负责翻译在程序叫做预处理器,翻译的过程叫预处理。
gcc -E code.c //把预处理的结果显示在终端上
gcc -E code.c -o code.i//把预处理的结果存储到文件中
-o 为执行结果重命名
1.文件包含
#include<>从系统指定的路径加载头文件
#include ""先从当前路径加载头文件,如果没有再从系统指定的路径加载头文件,
系统通过设置环境变量来指定加载头文件
-l路径 编译时指定加载头文件的路径
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
宏定义
宏常量#define PI 3.14 预处理会把代码中的所有宏名替换成它后面的数字。
好处:
  • 1 比用变量安全性高
  • 2 比直接使用数据的扩展性强
  • 2 可以为数据取一个有意义的名字,提高可读性
注意:定义宏不带分号,一般宏名都全部大写
宏函数
#define SUM(a,b) a+b
带参数的宏,并不是真正的函数,只是使用样式与函数一样,其实就是把一个复杂的公式抽象臭一个函数一样的宏,如果宏函数的内容太长可以使用大括号,但不能换行(可以使用续行符|)
预定义的宏

DATE 程序被编译的日期,以“Mmm dd yyyy”格式的字符串标注
__TIME__程序被编译的时间“hh:mm:ss”格式的字符串标注,该时间由asctime返回
__func__指示当前函数名
__FUNCTION__当前使用的函数名
__FILE__当前源文件的文件名,以字符串常量标注
__LINE__当前语句所在的行号,以10进制整数标注

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值