例如:
struct outer {
struct inner {
const int c;
int x;
} i;
int y;
};
I want to malloc outer
and then, later, initialize inner
to get the right const behavior for outer.i.c
.
例如,类似情况
struct outer *o = malloc(sizeof *o);
o->y = find_y();
int cc = find_c();
int xx = find_x();
o->i = { .c = cc, .x = xx };
但是,这给我留下了一个有关<代码>的错误,即只分配一个读写的成员,即,因为它是转让,而不是初始。
难道有办法做这样的事情,是对汇编者的冒犯? 让我们考虑trick滴与* (int *) &o->i.c)
相混淆,或在&o.i
上使用mcpy作为汇编者周围的污点。 我可以找到他们需要的地方,但我正在寻找最不ak的办法来这样做。
我没有使用C++(使用C99)。