一个简单的结构:
#ifndef x
#define x
...
#endif
属于预处理命令中的条件编译(其他两个:1.宏定义; 2.文件包含),它们均以#号开头,条件编译用来决定那些代码被编译,哪些是不被编译的,条件可以为表达时的值,或者某个特定的宏是否被定义,来确定编译条件。
预处理器把源代码分割或处理成为特定的符号用来支持宏调调用,先于编译器对源代码进行处理,预处理还会删除程序中的注释和多余的空白字符,所以,为了程序的可维护性,不要担心空白过多,或注释过多,条件编译可以使目标程序变小,运行时间变短。
这种结构,一般用在头文件中,如
头文件:
#ifndef _RANDOM_H_
#define _RANDOM_H_ 1
typedef int *callback_random(char *random,int len);
void &n bsp; set_callback(callback_random *cb);
int genrate_random(char *random,int len);
#endif
#ifndef x//先测试x是否被宏定义过
#define x
程序段1 //如果x没有被宏定义过,定义x,并编译程序段1
#endif
程序段2 //如果x已经定义过了则编译程序段2的语句,“忽视”程序段1。
源程序功能:如果用户定义了随机数回调函数则使用用户自己定义的,否则使用默认的回调函数。#endif用于中止条件块。