gpt4 book ai didi

c++ - 在 C 中使 struct fields const

转载 作者:行者123 更新时间:2023-11-28 05:42:41 25 4
gpt4 key购买 nike

给定一个结构:

struct not_const {
int a;
char *b;
} nc;

是否可以将其转换为 not_const 的 const 版本?:

struct const_version {
const int a;
const char *b;
};
struct const_version *c = (struct const_version *)&nc;

会不会有任何填充问题?我听说过透明 union ,但我认为它们仅用于函数参数。

谢谢。

最佳答案

类型不一样,不兼容。该代码违反了严格的别名。

编译器可以在结构成员之间放置不同数量的填充。

如果你想获得 const 成员,使用原始结构定义并使用指向 const 的指针:

const struct not_const* c = ( const struct not_const* )&nc;

这一行将导致编译器错误:

c->a = 123;

关于c++ - 在 C 中使 struct fields const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36823091/

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