- 主题:多个define如何方便的互斥使用?
设备可能接三种不同的DDR,现在的想法是采用宏定义区别
#define USE_DDR3_MT
#define USE_DDR3_UNI
#define USE_DDR2_MT
这三个宏同时只会define一个,
现在担心有人使用的时候不注意define了多个,
有什么办法可以防呆的确保不会弄错吗?或者还有其他更好的解决办法吗?
--
FROM 59.109.216.*
弄个宏叫USE_DDR_TYPE 来切换这几个选择,实际代码用USE_DDR_TYPE来处理。
或者ifdef自己处理?
【 在 haveidea (有一个美丽的新世界) 的大作中提到: 】
: 设备可能接三种不同的DDR,现在的想法是采用宏定义区别
: #define USE_DDR3_MT
: #define USE_DDR3_UNI
: ...................
--
FROM 125.123.85.*
回错回到您的邮箱了。 重新转帖一下。
如果用USE_DDR_TYPE的话,不知道代码里面如何处理?
比如现在的方式是
#ifdef USE_DDR3_MT
blablabla
#endif
使用 USE_DDR_TYPE的话,c语言不支持#ifeq 这样的语法,不知道怎么用。
ifdef自己处理是说类似这样吗?
#ifdef (USE_DDR3_MT)
#ifdef USE_DDR3_UNI
#error ("multiple defined")
#endif
#endif
感觉有点麻烦,而且可扩展性不强,再多几个类型就太复杂了。
【 在 lcoudy 的大作中提到: 】
: 弄个宏叫USE_DDR_TYPE 来切换这几个选择,实际代码用USE_DDR_TYPE来处理。
: 或者ifdef自己处理?
--
FROM 59.109.216.*
#define DDR3_TYPE_A 0
#define DDR3_TYPE_B 1
#define USE_DDR3_TYPE DDR3_TYPE_A
#if USE_DDR3_TYPE == DDR3_TYPE_A
//不同的处理逻辑
#endif
你看这样可以不
【 在 haveidea (有一个美丽的新世界) 的大作中提到: 】
: 回错回到您的邮箱了。 重新转帖一下。
: 如果用USE_DDR_TYPE的话,不知道代码里面如何处理?
: 比如现在的方式是
: ...................
--
修改:lcoudy FROM 125.123.85.*
FROM 125.123.85.*
宏不是有个统一的地方定义的吗
比如config.h,或者工程文件,或者build command line中。
在这个地方注释清楚三个互斥
如果人人随处都能定义宏,那协作起来就麻烦了
--
FROM 114.245.195.*
两种办法
一个是用#ifdef等做互斥
一个是不直接写在代码里,而是用编译选项-D来设置宏
【 在 haveidea 的大作中提到: 】
: 设备可能接三种不同的DDR,现在的想法是采用宏定义区别
: #define USE_DDR3_MT
: #define USE_DDR3_UNI
: ...................
--
FROM 222.65.133.*