TI中文支持网
TI专业的中文技术问题咨询交流网站

关于协议栈的宏定义冲突,实际生效位置在哪里?

宏可以在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定义的宏生效

赞(0)
未经允许不得转载:TI中文支持网 » 关于协议栈的宏定义冲突,实际生效位置在哪里?
分享到: 更多 (0)