我不知道为什么你会想想这样做,但我很好奇,如果有人知道答案。是否有可能在运行时使用一个结构定义一段时间,然后改变那个定义?是否有可能在运行时更改结构的定义?
即
typedef struct
{
int a;
int b;
}my_struct;
后来就......
typedef struct
{
int a;
int b;
int c;
}my_struct;
我不知道为什么你会想想这样做,但我很好奇,如果有人知道答案。是否有可能在运行时使用一个结构定义一段时间,然后改变那个定义?是否有可能在运行时更改结构的定义?
即
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
到不同但兼容的类型,你可以访问域以不同的方式。
请记住,兼容性很重要,您必须知道底层内存将在两个结构之间正确对齐。
您也可以通过使用重叠内存将两个结构放入一个联合来实现。
这就是Objective-C的诞生...... – 2013-04-20 05:57:28
如果你正在谈论运行时多态性,那么它可以工作,但你必须知道你在做什么。阅读Axel Schreiner的ooc.pdf。
从字面上看,没有。从概念?如果你对此置之不理,几乎可以做任何事情。 – WhozCraig 2013-04-20 05:51:46
不可能!使用不同的结构或使用数组。 – johnchen902 2013-04-20 05:52:25
结构定义no,但可以适当地使用指针和类型转换。你想实现什么? – Rohan 2013-04-20 05:53:08