文章目录
预处理命令基本介绍
1) 使用库函数之前,应该用#include 引入对应的头文件。这种以#号开头的命令称为预处理命令。
2) 这些在编译之前对源文件进行简单加工的过程,就称为预处理(即预先处理、提前处理)
3) 预处理主要是处理以#开头的命令,例如#include <stdio.h>等。预处理命令要放在所有函数之外,而且一般都放 在源文件的前面
4) 预处理是 C 语言的一个重要功能,由预处理程序完成。当对一个源文件进行编译时,系统将自动调用预处理程 序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译
5) C 语言提供了多种预处理功能,如宏定义、文件包含、条件编译等,合理地使用它们会使编写的程序便于阅读、 修改、移植和调试,也有利于模块化程序设计
预处理命令快速入门
具体要求:
开发一个 C 语言程序,让它暂停 5 秒以后再输出内容 “helllo, world !~”,并且要求跨平台,在 Windows 和 Linux 下都能运行,如何处理?
提示
1)Windows 平台下的暂停函数的原型是 void Sleep(DWORD dwMilliseconds),参数的单位是“毫秒”,位 于 <windows.h> 头文件。
2)Linux 平台下暂停函数的原型是 unsigned int sleep (unsigned int seconds),参数的单位是“秒”,位于 <unistd.h> 头文件
3)#if、#elif、#endif 就是预处理命令,它们都是在编译之前由预处理程序来执行的。
代码实现
#include <stdio.h>
//说明:在 windows 操作系统和 linux 操作系统下,生成源码不一样!!!
#if _WIN32 //如果是 windows 平台, 就执行 #include <windows.h>
#include <windows.h>
#elif __linux__ //否则判断是不是 linux ,如果是 linux 就引入<unistd.h>
#include <unistd.h>
#endif
int main() {
//不同的平台下调用不同的函数
#if _WIN32 //识别 windows 平台
Sleep(5000); //毫秒
#elif __linux__ //识别 linux 平台
sleep(5); //秒
#endif
puts("hello, world~");
return 0;
}
C 语言宏定义
基本介绍
1)#define 叫做宏定义命令,它也是 C 语言预处理命令的一种。所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串
2)宏定义我们在讲解常量时,做过介绍,这里我们再系统的讲解一下.
3)快速回顾
#define N 100
int main(){
int sum = 20 + N;//int sum = 20 +100
printf("%d\n", sum);
return 0;
}
小结:
int sum = 20 + N,N 被 100 代替了。
#define N 100 就是宏定义,N 为宏名,100 是宏的内容(宏所表示的字符串)。在预处理阶段,对程序中所有出现 的“宏名”,预处理器都会用宏定义中的字符串去代换,这称为“宏替换”或“宏展开”。 宏定义是由源程序中的宏定义命令#define 完成的,宏替换是由预处理程序完成的
宏定义的形式
#define 宏名 字符串
1)#表示这是一条预处理命令,所有的预处理命令都以 # 开头。宏名是标识符的一种,命名规则和变量相同。字 符串可以是数字、表达式、if 语句、函数等
2)这里所说的字符串是一般意义上的字符序列,不要和 C 语言中的字符串等同,它不需要双引号
3)程序中反复使用的表达式就可以使用宏定义。
宏定义#define 应用案例
体验一个一个宏展开的案例
#