2017-02-11 1 views
0

typedef union {
ロジック[1:0] c3;
ビット[3:0] a3;
バイトb3;
} pack3;システムアンパックでアンパックされたユニオン

パック3p3; LRMによれば、デフォルトの初期化は、上記の例では組合すなわちロジックの最初のメンバーによれば、従って、Xに割り当て、0に割り当てる残りが、私はModelSimのにコンパイルするときと、オブジェクトウィンドウにチェックc3はれる

a3とb3には異なる結果があります。また、p3.a3 = 4'b0010を割り当てます。 a3とb3の値は変更されますが、c3では変更されません。私は各変数に利用可能なメモリしかないことを知っているので、あらゆる値の更新はすべてを反映します。

答えて

1

あなたがアンパック組合の一員に書き込むと(セクションの終わりに7.3労働組合1800-2012 LRMを述べた1つの特別条項を除く)他のメンバーを読み込むしようとした場合保証はありません。オーバーラップしているメンバーのレイアウトを保証するには、パックユニオンを使用する必要があります。

+0

ありがとう@ dave_59はい、パックユニオンでは問題ありませんが、パックされていない不確実性があります。 – Xeroxpop

関連する問題