子串宏参数

时间:2018-04-17 13:40:50

标签: c macros

有可能以某种方式对一个宏参数进行子串? 我面临以下问题。我有类似

的东西
#define READ(Name) structure.##Name.value

这个宏将使用类似PREFIX_Name的方法调用,并且在结构中有没有PREFIX的名称。所以我需要照顾那个前缀。我该怎么做?

1 个答案:

答案 0 :(得分:0)

最好的选择显然不是那样调用宏。第二个最佳选择是重命名结构成员。

错误的选项,我能想到的最不好的选择是为每个结构成员编写一个宏:

#include <stdio.h>

typedef struct { int x; int y;} foo;

#define PREFIX_x_FIXER structure.x
#define PREFIX_y_FIXER structure.y

#define READ(Name) Name##_FIXER

int main (void)
{
  foo structure;
  READ(PREFIX_x) = 5;
  printf("%d\n", READ(PREFIX_x));
}