在这种情况下,如果在到达这段代码,该table_size宏尚未被定义,它可以被定义为一个值100。如果它已经存在,它将保持其先前的值自#指令不被执行的。
如果其他的#,# # elif(即,“如果”)指令用来指定要满足对部分代码进行编译一些条件所包围。条件如下#如果或# elif只能计算常量表达式,包括宏观表达式。例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#if TABLE_SIZE>200
#undef TABLE_SIZE
#define TABLE_SIZE 200
#elif TABLE_SIZE<50
#undef TABLE_SIZE
#define TABLE_SIZE 50
#else
#undef TABLE_SIZE
#define TABLE_SIZE 100
#endif
int table[TABLE_SIZE];
注意:如果#整个结构,# elif和其他#链式指令结束# endif。
如果定义了的#和# ifndef行为还可以通过使用特殊的算子定义了!分别定义在任何#如果或#指令位置:
1
2
3
4
5
6
7
#if defined ARRAY_SIZE
#define TABLE_SIZE ARRAY_SIZE
#elif !defined BUFFER_SIZE
#define TABLE_SIZE 128
#else
#define TABLE_SIZE BUFFER_SIZE
#endif