#if
a
#else
b
#endif,其实这个就是选择编译那部分,和if-else的区别就是:编译的时候进行选择的,如果是a的话,b那么就根本不去编译,而if-else是全部编译好的,然后再去运行。
其实,预编译指令就是在编译前所要做的一些工作,比如,导入头文件,选择编译,等等,这样可以提高编译的效率。
这个是基础的知识。但是今天再判断条件时没有注意,竟然进了坑。
比如这一句
#if (CC_CHARGER_TYPE == CC_CHARGER_TYPE_IOS) contentElement_chat = contentElement_chatroom->FirstChildElement("appstore")->FirstChildElement("roomid"); #else contentElement_chat = contentElement_chatroom->FirstChildElement("other")->FirstChildElement("roomid"); #endif
本来是没错的,但是这句话是直接复制过来的,没有看判断条件有没有,然后就直接宏定义了,然后再编译运行的时候发现else并没有执行,最后发现,原来没有包含条件编译的那个条件的头文件,denfine的时候这两个变量是找不到的,所以就会一直为真,就只会编译第一个语句,以为编译他会找到的,结果没有包含他是找不到的,记下这个坑,验证起来很简单,可以直接跳转看能不能跳转到他的定义,或者直接去掉#看if会不会报错就知道了
版权属于:东哥笔记 - DongGe.org
本文链接:http://dongge.org/blog/258.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!