我有一个结构定义,我不允许更改。但是,我想在对它进行操作后访问成员(操作符出现在第一个操作数之后)。在我看来,我可以使用宏来访问修改后的值,就像它是结构本身的一部分一样。
struct test{
int a;
int b;
} *t;
#define c b+1
...
printf("%d", t -> c);
这对我来说确实看起来更好,但感觉更换时会出现问题。有没有更好的方法来做这样的事情?这是不好的做法吗?什么可能出错?
答案 0 :(得分:1)
可能出现什么问题?
printf("%d", t->c * 3);
首先。
答案 1 :(得分:1)
你的建议很糟糕。
t->c
是我添加的成员或其中一个疯狂的marcros?c
+1还是-1?如果你真的因某种原因需要宏观化,那就更清楚了。
e.g。
#define BPlusOne(t) ((t)->b + 1)
printf("%d", BPlusOne(t));
如果这对于学校来说只是一件简单的工作,那就太过分了,但是我正在开发一个大型系统,在这个系统中生成结构,就像所有这些类型的宏一样,在这种情况下它可以工作(但是我仍然没有这样做过; - )