<标识符>在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:stdio.h
#ifndef _STDIO_H_ //如果没有定义_STDIO_H_
#define _STDIO_H_ 1 //则定义_STDIO_H_, 值为 1
1. 如果没有定义<标识符>, 则定义<标识符>
#ifndef <标识符>
#ifdefine <标识符> <标识符值>
..
..
#endif
2. 如果没有定义<标识符>, 则预编译程序段1, 否则编译程序段2
#ifndef <标识符>
程序段1
#else
程序段2
#endif
3. 如果表达式的值不为0, 则编译程序段1, 否则编译程序段2
#if 表达式
程序段1
#else
程序段2
#endif