C语言进阶:预处理命令(二)

三、预定义宏

预定义宏是指不需要用户使用#define定义就可以使用的特殊宏名称,通常是由预处理器提前定义好的。预定义宏名称是由 _ _ 开头和结尾,中间是大写字符。例如ANSI C标准中的五个预定义宏:

  • __LINE__:当前编译代码的行号。
  • __FILE__:当前源程序文件的名称。
  • __DATE__:当前源程序创建日期。
  • __TIME__:当前源程序创建时间。
  • __STDC__:判断当前编译器是否是ANSI C。如果是返回 1 。

这些定义在实际开发中,结合条件编译可以实现跨平台的效果。比如,如果当前编译器不是ANSI C,只支持一部分预定义的宏名称等等。

四、文件包含

在C语言编程中,#include是一个预处理指令,用于将其他源文件或头文件的内容包含到当前源文件中。最常见的用法是包含C标准库提供的头文件,例如 stdio.h(标准输入输出)、string.h(字符串处理)和 math.h(数学函数)等。除此之外,开发者也可以根据需要包含自己定义的头文件(通常以 .h为扩展名),以便在多个源文件中共享代码和声明。

在实际的程序开发中,通常会将以下内容集中存放在头文件(.h 文件)中,以便通过 #include指令进行包含和复用:

  • 宏定义(使用 #define定义的常量或宏函数)
  • 结构体、联合体与枚举的声明​
  • 使用 typedef进行的类型重定义​
  • 函数的声明(尤其是那些在多个源文件中使用的函数)​
  • 全局变量的声明(注意:这些变量不应使用 static修饰,否则其作用域仅限于当前文件)

通过合理地使用头文件和 #include指令,可以提高代码的模块化程度,增强可维护性与复用性。

通常情况下,使用 #include 指令,被包含的头文件有以下两种写法:

#include "stdio.h"
#include <stdio.h>

这两种写法的区别如下所示:

  • 尖括号<>:这是标准方式,系统直接去存放C库函数的目录下寻找要包含的头文件。
  • 双引号"":这种写法会使系统先在用户当前目录下查找要包含的文件,没找到就将搜索目标转向库函数所在目录。

因此,在实际开发中,为提升搜索效率,使用标准库函数时使用<>,而包含自主开发的头文件时使用双引号(双引号内可以使用绝对路径和相对路径)。

注意点:

  • 一个 #include 指令只能包含一个文件
  • 文件包含可以嵌套使用,即被包含的文件中可以包含其他文件

五、条件编译

在 C 语言中,还提供了条件编译的功能,也就是说当满足某个条件时,编译器才会编译某个代码块。如下所示:

#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        if (unlikely(Py_SIZE(x) < 0)) {
            goto raise_neg_overflow;
        }
#else
        {
            int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
            if (unlikely(result < 0))
                return (in
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jackispy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值