gpt4 book ai didi

c - 使用 define 将结构成员分配给同一结构的另一个成员

转载 作者:太空宇宙 更新时间:2023-11-04 04:13:01 25 4
gpt4 key购买 nike

typedef struct{
[..]
type_t member1;
type_t member2;
[...]

}structType_t

我想将 member1 分配给 member2。由于这是一个重复的操作,我想将 assignmet 放在 #define 中:

#define op (structType_t).member1=(structType_t).member2

但是,这似乎是错误的,编译器如何知道它是同一结构的成员,而且我看不到使用它的方法。有任何想法吗?我知道我还有其他选项,例如宏或函数,但我的问题是这样可行吗?

最佳答案

编写这样的宏绝不是一个好主意。可能没有比 mystruct.member1 = mystruct.member2; 更好、更易读的东西了。

如果你出于任何原因想要封装它,请使用一个函数:

void structTypeMemberCopy (structType_t* obj)
{
obj->member1 = obj->member2;
}

这可能会被内联并替换为机器代码中的 mystruct.member1 = mystruct.member2; 的等价物。

最后是坏主意宏,它可以是类型安全的:

#define structTypeCopy(obj) _Generic((obj), structType_t: (obj).member1 = (obj).member2)

...

structType_t mystruct = { ... };
structTypeCopy(mystruct);

关于c - 使用 define 将结构成员分配给同一结构的另一个成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55179479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com