?たとえば、このプログラムは明確に定義されていますか?同じフィールドシーケンス内のフィールドは同じオフセットを持っていますか?レコードタイプ<em>T1</em>と<em>T2</em>は、同一であり、最初の<em>のk</em>フィールドがこれらのフィールドは、同じオフセットすることが保証されている場合は
typedef struct {
int x, y;
} Shape;
typedef struct {
int x, y;
int w, h;
} Rectangle;
static void InitShape(Shape *s)
{
s->x = 0;
s->y = 0;
}
int main(void)
{
Rectangle r;
InitShape((Shape *) &r);
r.w = 1;
r.h = 1;
return 0;
}
編集:(代わりタイプ形状の単一のフィールド塩基の)私のプロジェクトでCコードが生成され、で形状から個々のフィールド長方形を含む他の場所コードを簡素化します。
おそらく - 私はそれに賭けないでしょう。なぜ彼らは彼らがそうすると思いますか? –
["Struct inheritance in C"](http://stackoverflow.com/questions/1114349/struct-inheritance-in-c)をご覧ください。 – Schwern
あるタイプを別のタイプにキャストしても、厳密なエイリアシングルールに違反していませんか? downvoted、その答えは、他の構造体に1つの構造体を含めることをお勧めします。 –