一个项目中要求有多个版本。为了一份代码多个版本,便于维护。采用了 条件编译。定义了一个宏,如果宏存在编译 #ifndef 下面的。 如果宏不存在则编译 #else下面的。
#ifndef SERVER
#else
[self setRightItem];
#endif
#ifdef,#else,#endif如我们常识认为的那样,程序会根据判断条件处理或者忽略某一个程序段。
例子:
#ifdef MAC_OS_X
# define DATADIR “/uxnl/data”
#else
# define DATADIR “/usr/data”
#endif
很多宏是为了进行条件编译。一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。
条件编译命令最常见的形式为:
#ifdef 标识符
程序段1
#else
程序段2
#endif
它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。
其中#else部分也可以没有,即:
#ifdef
程序段1
#denif
这里的“程序段”可以是语句组,也可以是命令行。这种条件编译可以提高C源程序的通用性。如果一个C源程序在不同计算机系统上系统上运行,而不同的计算机又有一定的差异。例如,我们有一个数据类型,在Windows平台中,应该使用long类型表