構造体は厳密な c 89 で適切に定義されていますか? 私はこのコードを意味します
struct a {
int a, b;
void * c;
} k;
//init k...
struct b {
int u, w;
long *data;
} p = *(struct b*)&k;
標準をサポートするすべてのコンパイラで動作しますか? キャストを逆にすると (たとえば、構造体 b から構造体 a へのキャスト)、c は最初と同じになりますか? gcc (-ansi -pedantic を使用しても)、Microsoft コンパイラなどで動作すると確信していますが、標準の c 89 であることは保証されますか?
ありがとうございました!