条件编译:源程序被编译时,其中一部分内容只在某个条件成立或不成立时才去编译,即对一部分内容指点编译的条件。
范式一
#ifndef 标识符
程序段 1
#endif
含义:如果没有定义标识符,就编译程序段1
示例:
#ifndef _getkey_h
#define _getkey_h
#include<sys/types.h>
#endif
含义: 如果没有定义符号变量_getkey_h,就定义改变量并包含头文件<sys/types.h>。
范式二
#ifndef 标识符
程序段 1
#else
程序段 2
#endif
含义:如果没有定义标识符,就编译程序段 1,否则编译程序段2.
范式三
#ifdef 标识符
程序段1
#endif
含义:如果定义了标识符,就编译程序段 1,否则不编译改程序段
例:
#ifdef DEBUG
printf("hello");
#endif
编译时,在头文件中加入 #define DEBUG
范式四
#ifdef 标识符
程序段 1
#else
程序段 2
#endif
含义:如果定义了标识符,就编译程序段 1,否则编译程序段 2。
范式五
#include<stdio.h>
#define MAX(x,y) (x>y?x:y)
......
int a=5,b=3,c;
........
if c
c=MAX(a,b);
#endif
含义:如果变量c存在,就调用宏MAX(a,b)获得最大值,并把该值赋给c。