现在大型的程序都有一些配置文件,可以定义一个功能是否启用,系统会有默认的一些配置项,是否启用功能由用的人来决定
比如一个config.h文件等,或者linux里面很多自动生成编译信息等
defined(HASH_DEFINE_OWN_STDINT) 这里的这个宏表示是否要开启自己定义int类型
定义了这个宏表示是否启用这个功能,然后定义为1,表示使用,定义为0表示不使用, 是双重开关。
按照楼主说的,也可以用一重开关,这里事实上可以用一重开关就行了
比如一些config文件里面有一重,二重开关都行:
HASH_DEFINE_OWN_STDINT 0 //2重开关
using_ssl //1重开关
using_eth eth0 //2重开关
....
defined(HASH_DEFINE_OWN_STDINT) 是检验 HASH_DEFINE_OWN_STDINT 这个宏是否已经被定义的意思
#if defined(HASH_DEFINE_OWN_STDINT) && HASH_DEFINE_OWN_STDINT 的意思就是判断 HASH_DEFINE_OWN_STDINT 宏已经被定义 且 HASH_DEFINE_OWN_STDINT 宏的值为真的这个表达式的值
相当于两层判断,一是有没有定义这个宏,二是这个宏的值是否不为0。当两个都为真时,这个#if条件才为真