Makefile与宏

本文介绍了预处理的概念,预处理指令以#开头,预处理器负责将C代码翻译,通过`gcc -E`查看或保存预处理结果。头文件应只包含声明,避免定义冲突。接着,讨论了Makefile的作用,它是编译指令的集合,用于自动化编译过程,通过检查文件修改时间提升编译效率。
摘要由CSDN通过智能技术生成

预处理指令:
C代码不能直接被编译器编译,需要一段程序把它翻译一下,负责翻译的程序叫作预处理器,,翻译的过程叫预处理,被翻译的语句叫预处理指令,以#开头都是预处理指令。
gcc -E code.c 查看预处理结果
gcc -E code.c -o code.i 把预处理的结果保存在文件中。

1、文件包含
    #include 把一个头文件导入到当前文件中。
        #include <> 从系统指定的路径查找并导入头文件。
        #include "" 先从当前路径下查找,如果没有再从系统指定的路径查找关导入头文件。
        系统是通过设置环境变量、编译参数-I来指定头文件的查找路径。
2、宏常量
    #define 宏名 字面值数据
    如果在代码使用了宏,在预处理时会把所有宏替换成宏名后的字面值数据。
    优点:提高可扩展性,提高可读性、提高安全性,还可以与case配合使用。
    注意:宏名一般全部大写,末尾不能加分号,不能直接换行(可以使用续行符)。
    预定义的宏:
        __FILE__
        __func__
        __LINE__
        __DATE__
        __TIME__
3、宏函数
    #define FUNC(arg) arg*10
    不是真正的函数,就是带参数的宏,使用宏函数的位置会被替换成宏函数后面的代码,提供的参数会被替换相应的位置。
    注意:可以使用续行符和大括号来保护代码。
    二义性:由于处理的位置或参数不同宏函数有多种功能,这种叫宏函数的二义生,可以在最外层加括号、每个参数加括号来降低产生二义性的可能 。
    运算符:
        #   把宏函数的参数变成字符串
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值