c/c++开发分享是否可以在运行时更改结构的定义?

我不知道为什么你会要这样做,但我很好奇是否有人知道答案。 是否有可能在运行时使用一个结构定义一段时间,然后更改该定义?

typedef struct { int a; int b; }my_struct; 

后来……

 typedef struct { int a; int b; int c; }my_struct; 

    不,您无法更改给定类型的定义,但将其转换为完全不同的类型没有任何问题,假设基础数据的布局相似且兼容。

    例如,考虑:

     struct s_xyzzy { int a; int b; }; struct s_plugh { int a; char b0; char b1; char b2; char b3; }; struct s_xyzzy *xyzzy = malloc (sizeof (*xyzzy)); ((struct s_plugh *)xyzzy)->b0 = 'x'; 

    通过将xyzzy转换为不同但兼容的类型,您可以以不同的方式访问字段。

    请记住,兼容性很重要,您必须知道底层内存将在两个结构之间正确对齐。

    您也可以使用重叠内存将两个结构放入联合中。

    如果您正在谈论运行时多态性 ,那么可以使它工作,但您必须知道您正在做什么。 阅读Axel Schreiner的ooc.pdf 。

      以上就是c/c++开发分享是否可以在运行时更改结构的定义?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(猴子技术宅)。

      本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/545963.html

      发表评论

      电子邮件地址不会被公开。 必填项已用*标注