-
-
[分享]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
赞赏
他的文章
- [分享]C++基础十七-异常机制 8576
- [分享]C++基础十六-模板 8939
- [分享]C++基础十五-运算符重载 8962
- [分享]C++基础十四-抽象类 8674
- [分享]C++基础十三-多态 8475
看原图
赞赏
雪币:
留言: