C语言预处理
程序员文章站
2024-02-22 16:07:58
...
预处理
预处理是编译前所做的工作.编译前,编译器自动调用预处理程序对源码中’#'开头的预处理部分进行处理,处理完
毕之后,进入源码的编译阶段.
预定义符号
常用的预定义符号:
__FILE__ : 编译的源文件名.
__FUNCTION__ : 当前所在函数的函数名.
__DATE__ : 编译日期.
__TIME__ : 编译时间.//格式占位符都用%s printf("%s",__DATE__);
2.宏定义: 自定义一个宏(要符合标识符的命名规则),用于表示任意数据或者表达式.
无参宏定义:
#define 宏名 宏替换
比如: #define A 35 //A就代表整型数据35.
#define TEST "abddgdsfdlfj" //TEST就代表"abddgdsfdlfj"
#define ADD 1+3
#define TEST abddgdsfdlfj //TEST就代表abddgdsfdlfj
带参宏定义:
#define 宏名(参数表) 宏替换
比如: #define M(a,b) a+b-2
K = M(1,2) + 4;
---> K = 1+2-2+4
3.文件包含:
#include <name.h> //包含系统头文件.
#include “name.h” //包含自定义头文件.
文件包含允许嵌套,即在一个被包含文件中可以包含其它文件.
4.条件编译: 根据不同的条件编译不同代码段.
----------------------------------------------------------------------------------------------
#ifdef 宏名 //如果定义了宏"宏名",则编译代码段.
代码段;
#endif
----------------------------------------------------------------------------------------------
#ifdef 宏名 //如果定义了宏"宏名",则编译代码段1,否则编译代码段2;
代码段1;
#else
代码段2;
#endif
----------------------------------------------------------------------------------------------
#if 表达式 //判断表达式的逻辑值(真或假),若逻辑值为真,则编译代码段1,否则编译代码段2.
代码段1;
#else
代码段2;
#endif
----------------------------------------------------------------------------------------------------