首页
社区
课程
招聘
[分享]C语言基础十-预处理命令
发表于: 2021-6-7 18:35 4605

[分享]C语言基础十-预处理命令

2021-6-7 18:35
4605

C语言源文件要经过编译、链接才能生成可执行程序:

C语言程序在编译和链接之前,还需要对源文件进行一些文本方面的操作,比如文本替换、文件包含、删除部分代码等,这个过程叫做预处理,由预处理程序完成。预处理主要是处理以#开头的命令,预处理命令要放在所有函数之外,而且一般都放在源文件的前面。以#号开头的命令称为预处理命令:
预处理命令

#include叫做文件包含命令,用来引入对应的头文件(.h文件)。#include 的处理过程很简单,就是将头文件的内容插入到该命令所在的位置,从而把头文件和当前源文件连接成一个源文件,这与复制粘贴的效果相同。

#define叫做宏定义命令,所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。这里所说的字符串是一般意义上的字符序列,不要和C语言中的字符串等同,它不需要双引号。

C语言允许宏带有参数,在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。

根据不同情况编译不同代码、产生不同目标文件的机制,称为条件编译,条件编译是预处理程序的功能,不是编译器的功能。

需要注意的是,表达式中不能包含变量,而且结果必须是整数。

如果当前的宏已被定义过,则对“程序段1”进行编译,否则对“程序段2”进行编译。

如果当前的宏未被定义,则对“程序段1”进行编译,否则对“程序段2”进行编译,这与 #ifdef 的功能正好相反。

#define 宏名 字符串
/*
宏名是标识符的一种,命名规则和变量相同。
字符串可以是数字、表达式、if语句、函数等。
*/
#define 宏名 字符串
/*
宏名是标识符的一种,命名规则和变量相同。
字符串可以是数字、表达式、if语句、函数等。
*/
//带参宏定义
#define 宏名(形参列表) 字符串
//带参宏调用的一般形式:宏名(实参列表);
//带参宏定义
#define 宏名(形参列表) 字符串
//带参宏调用的一般形式:宏名(实参列表);
#if 整型常量表达式1
    程序段1
#elif 整型常量表达式2
    程序段2
#else
    程序段3
#endif
#if 整型常量表达式1
    程序段1
#elif 整型常量表达式2
    程序段2
#else
    程序段3
#endif
#ifdef  宏名
    程序段1
#else
    程序段2
#endif
#ifdef  宏名
    程序段1
#else
    程序段2
#endif
#ifndef 宏名
    程序段1
#else
    程序段2
#endif
#ifndef 宏名
    程序段1
#else
    程序段2
#endif

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 2
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//