宏可以在f8wConfig.cfg,f8wCoord.cfg,f8wRouter.cfg,f8wZCL.cfg,f8wEndev.cfg等配置文件中定义,也可以在工程的头文件中定义,如nwk_globals.h,ZGlobals.h,ZDNwkMgr.h等xxx.h,如果在xxx.h头文件定义的宏和xxx.cfg定义的宏定义发生了冲突,会以哪一个的宏定义生效?
例:
ZDNwkMgr.h中
#if !defined ( ZDNWKMGR_MIN_TRANSMISSIONS )
#define ZDNWKMGR_MIN_TRANSMISSIONS 0
#endif
f8wConfig.cfg中
-DZDNWKMGR_MIN_TRANSMISSIONS=20
哪个定义生效?
谢谢!
Viki Shi:
默认20 #if !defined ( ZDNWKMGR_MIN_TRANSMISSIONS ) #define ZDNWKMGR_MIN_TRANSMISSIONS 0#endif 这段代码中,如果没定义ZDNWKMGR_MIN_TRANSMISSIONS,下面的语句才生效,实际上已经定义了,所以语句无效,不是重复定义
user3514461:
回复 Viki Shi:
哦,没仔细看。是否说,头文件和cfg文件一般是不会发生冲突的,但是如果发生冲突了,以哪个定义的为准?
谢谢
Viki Shi:
回复 user3514461:
一般不会冲突,基本上都有个#if !defined 判断的
YiKai Chen:
你這個狀況會以f8wConfig.cfg定义的宏生效