天天看点

条件编译的用法

在很多大型的项目工程中,为了方便调试和代码的区分,很多时候会使用条件编译。

(1)#ifdef、#else、#endif指令

#ifdef MAVIS
	#include "horse.h"		//如果已经用#define 定义了MAVIS,则执行这里的命令
	#define STABLES	5
#else
	#include "cow.h"		//如果已经没有用#define 定义了MAVIS,则执行这里的命令
	#define	STABLES	15
#endif
           

(2)#ifndef和#endif指令

这两个指令配合起来常用于头文件中,防止重复定义。一般地,当某个文件包含了几个头文件,而且每个头文件可能包含了相同的宏时,使用#ifndef则可以防止对该宏重复定义。此时,第一个头文件中的定义变成了有效定义,而其他头文件中的定义则被忽略。

#ifndef NAMES_H_
#define NAMES_H_

#define	SLEN	32

//结构申明
struct names_st
{
	char first[SLEN];
	char last[SLEN];
}

#endif
           

(3)#if和#endif指令

#if指令更像常规的C中的if;#if后面常跟常量整数表达式。如果表达式为非零值,则表达式为真。在该表达式中,可以使用逻辑运算符和关系运算符。

#if SYS == 1
	#include "ibm.h"		//条件表达式满足,则执行这里的命令
#endif

#if 0
	代码					//常用来屏蔽某段代码
#endif
           

(4) #和define之间有空格

#define = # define

(5) #if defined X

#ifdef X = #if defined X

——————————

2018.12.06

23:11