#ifndef YM //是否定义过YM, 如没有定义则为真
/*do something*/
#endif

#ifdef YM //是否定义过YM, 如定义过则为真
/*do something*/
#endif
这一般用来避免同时包含两个相同的头文件。

       编译C++程序时,编译器自动定义了__cplusplus,编译C程序时,则自动定义了__STDC。
但不会同时定义__cplusplus和__STDC,可通过这个判断一个程序是C还是C++程序 :)

四个预定义名称:
__LINE__,编译器已编译了几行代码,包括注释和空行
__FILE__,当前源代码文件名
__TIME__,当前时间
__DATE__,当前日期