【发布时间】:2019-05-02 10:51:24
【问题描述】:
我有一个结构 A,其中 A 有字段 v0 和 v1。 有一个 A 数组:
A St[3];
我想这样定义 B:
#define B[x] St[x].v0
我无法插入 x 作为要定义的参数。 有没有办法在 C 中做到这一点? 我的目的是能够用 B[x] 替换 St[x].v0 的每个实例。
【问题讨论】:
-
请展示它,而不是描述您的代码。尝试创建您在问题中向我们展示的minimal reproducible example。
-
如果你使用括号而不是方括号,你可以这样做:
#define B(x) St[x].v0。 -
replace each instance of St[x].v0 with B[x]- 您提供的宏#define B[x] St[x].v0将用B[x]替换St[x].v0(如果只允许在宏名称中使用[)。请展示St[x].v0或B[x]的用法示例。无论如何,今天的课程:编写适当的抽象并使用访问函数。 -
不是严格意义上的数组,但你可以像这样访问元素:
B(i) = 42;或a = B(j);。 -
“它将最大程度地减少现有项目中的代码更改” - 您能否向我们提供更多信息?您所做的似乎不是最小化代码更改的最佳解决方案...
标签: c c-preprocessor