C语言基本语法——预处理器和预处理指令

时间:2024-08-17 18:05:26

  1、什么是预处理器

  2、什么是预处理器指令

  3、预处理器指令

  4、宏指令

  5、宏函数

  6、宏函数的优缺点

  7、条件编译指令

1、什么是预处理器

  • 预处理器是一个程序,用来处理源程序中的预处理指令。

  • 一个程序在编译之前一般都要经过预处理。

2、什么是预处理器指令

  • 以“#”开头的指令叫预处理指令

  • 可以出现在任何位置,必须一行结束

  • 如果要换行,须得用"\"来连接两行内容

 

3、预处理器指令

  • 文件包含

#include <>#include “”

  • 宏定义

无参宏定义

有参宏定义

  • 条件编译

#if

#ifdef

#ifndef

#endif

#elif

#else

#undef

#if defined

4、宏指令

  宏相当于文本的替换操作

  • 语法格式:

-定义在函数的外面
-格式:#define PI 3.14

  PI为宏的文本内容 在编译前将PI的内容替换成3.14

5、宏函数

  • 语法格式: #define MianJi(r) PI*r*r

  宏函数只是文本,只是相当于做了内容替换的操作,注意参数是没有数据类型

6、宏函数的优缺点

  • 宏函数的优缺点

可以代码更简单、更容易,避免大量使用。

  • 宏函数注意事项

– 宏函数中的参数一定要用括号括起来,以防止替换后的优先级问题。

– 宏函数的整个表达式也需要用括号括起来,以防止宏函数参于表 达式的运算

– 宏函数中的多条语句时,应写成复合语句,以防止重复定义变量。

– 调用宏函数时,不要将++,--的表达式做为参数传递,可以先++,--后调用,或者,调用后++,--,以防止在宏函数中重复地 计算++,--

– 宏函数也可以调用另一个宏函数

7、条件编译指令

  • 在代码中设置编译条件 根据编译条件进行代码的编译并运 行。(跨平台)

  • 在编译文件的时候传入一个参数,根据参数就可以对代码进 行有选择的编译。

gcc -DZHAOBENSHAN main3.c

  • 条件指令

#if 如果 #ifdef 如果定义
#ifndef 如果没定义 #elif 如果 //else if

#else 否则 与 #if 对应关系
#endif 结束标识
#undef 取消宏和#define 定义宏

  • 编译方式

  根据参数编译

gcc -DXXX main.c

  根据宏值(参数)

#define ZHAOBENSHAN 1

  根据宏"值(逻辑)"进行编译

#if ZHAOBENSHAN==1