判断定义,进行条件编译
#ifdef 标示符 //定义了标示符,编译程序段1;否则编译程序段2;
程序段1
#else
程序段2
#endif
//------------
#ifdef 标示符 //定义了标示符,编译程序段;否则不编译;
程序段
#endif
//------------
#ifndef 标示符 //未定义标示符,编译程序段1;否则编译程序段2;
程序段1
#else
程序段2
#endif
//------------
#ifndef 标示符 //未定义标示符,编译程序段;否则不编译;
程序段
#endif
用途
被重复引用
被重复引用是指一个头文件在一个c文件中被include了多次,这是由于include嵌套造成的;
a.h文件#include "c.h";
b.c文件#include "a.h" 和#include "c.h";
造成c.h被重复引用;
#ifndef A_H
#define A_H
……
#endif
第一次未定义A_H,定义A_H,编译代码,结束;
之后,已定义A_H,结束;
从而达到不重复编译的目的。
判断值,进行条件编译
#if (常量表达式) //常量表达式非零,编译程序段1;否则编译程序段2;
程序段1 //常量表达式可以不加括号;
#else
程序段2
#endif
//----------
#if (常量表达式) //常量表达式非零,编译程序段;否则不编译;
程序段
#endif
#define
#define 标示符 字符串
字符串可以是常数、表达式、格式串;
#define SYSCLK_FREQ_72MHz 72000000 //标示符SYSCLK_FREQ_72MHz的值为72000000;