【问题标题】:Substring macro parameter子串宏参数
【发布时间】:2018-04-17 13:40:50
【问题描述】:

可以以某种方式对宏参数进行子串化吗? 我面临以下问题。我有类似的东西

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

此宏将使用 PREFIX_Name 之类的名称调用,并且在结构中存在不带 PREFIX 的名称。所以我需要照顾那个前缀。我该怎么做?

【问题讨论】:

  • 那么,您希望READ(PREFIX_abc) 扩展为structure.abc.value?这是现有的代码,还是您没有特殊原因这样做?

标签: c macros


【解决方案1】:

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

如果没有好的选择,我能想到的最差的选择是为每个结构成员编写一个宏:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 2011-10-06
    • 2014-09-01
    • 2013-11-28
    • 2012-05-14
    • 1970-01-01
    相关资源
    最近更新 更多