以某种方式子串一个宏参数是可能的?
我面临以下问题我有点像

#define READ(Name) structure.##Name.value

此宏将使用类似前缀名称的名称调用,并且在结构中有没有前缀的名称所以我需要处理这个前缀我该怎么做?

最佳答案

最好的选择显然是不要那样调用宏第二个最佳选择是重命名结构成员。
如果没有好的选项,我能想到的最不坏的选项是为每个结构成员编写宏:

#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));
}

关于c - 子串宏参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49879719/

10-11 18:31