预处理指令介绍
我们使用#
作为一个预处理命令的开始。编译器在预处理阶段会根据预处理命令对源文件进行转化。所以,有关预处理相关的替换调试,可以通过编译预处理后生成的文件进行对比。
我们常用的预处理命令有如下:
#include
:用于包含我们要使用的头文件。#define
:宏定义。分为下面两种情况含参
宏定义:如#define MAXIS(x,y) (x > y) ? x : y
。不含参
宏定义:如#define LEN_MAX 1
#if
:条件编译,后面跟表达式。如#if 1
.#ifdef
:条件编译,后面跟标识符。表示如果定义此宏,则为真。如#ifdef USE_THIS_MOUDLE
.#ifndef
:条件编译,后面跟标识符。含义与#ifdef
相反。#else
,#endif
,#elif
:条件编译,配合#if
,#ifdef
,#ifndef
使用。undef
:取消已经定义的宏定义。常用于修改宏的值。#error
:当预处理器预处理到#error
命令时将停止编译并输出用户自定义的错误消息。#warning
:输出用户自定义的告警消息。(c99里没有这个预处理命令,但一般的编译器都扩