扩展值为零的宏作为参数

时间:2016-04-22 06:31:44

标签: c++ c macros

您好我有以下代码,应该展开以创建注册名称:

#define REG_VAL(base,reg,idx,fld) base##_##reg##_##idx##_##fld

如果我给idx一个0以外的其他值,这段代码工作正常,但当我将idx设为0时,宏没有正确扩展。有人可以指出这里有什么问题吗?

例如,我在头文件中有以下定义:

#define cpu_control_0_reset   cpu_control_reset_global_reset_0

在我的.cpp文件中我想使用以下宏定义:

REG_VAL(cpu,control,1,reset) 

所以这将正确地导致:

cpu_control_1_reset 

REG_VAL(cpu,control,0,reset)会导致:

global_reset_0

0 个答案:

没有答案