和泉の日記。

気が向いたときに、ちょっとだけ。

共用体。

2011-07-16 20:46:40 | いつもの日記。
やっぱ駄目だ。超気になるので改めて書きます。

C言語が分かる人に質問。
共用体(union)ってあるじゃない?
あれの使い方について。

union Uni
{
AAA str; //文字コードを格納する
BBB num; //数字を格納する
};

union Uni u;

ここで、型AAAと型BBBはどちらも独自定義で共に2byte領域とします。
つまり、strとnumは全く同じメモリを使ってるということ。

この共用体Uniについて、strに0x0001を格納したい目的で
u.num = 0x0001;
と書くのは、邪道極まりないと思うんだけどどうですか。

それはお前、やっちゃ駄目だろう!?
いや、そりゃu.str == 0x0001になりますよ? 当たり前だ。
けど違うって。それは駄目だって。

つーか普通、unionはそういう風に同メモリを共有する他の変数に影響がないように
細心の注意を払って使うものだと思うんです。
この記述は、その細心の注意を放棄してるというか逆手にとってるというか。
言語的には許されてるけど、解読性とかメンテナンス性とかの観点から考えると
真逆に突っ走ってる感じです。

そんなわけで、僕はこの記述に反対。大反対。
どうでしょう?
コメント (2)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« きょうのひとこと。 | トップ | きょうのひとこと。 »
最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
Unknown (のだっち)
2011-07-17 12:18:56
コピペの弊害かねー
参照自体は問題ないけど、strに入れたいのにnum指定はないわー
っていうか、ポインタ使えよと
返信する
Unknown (和泉)
2011-07-17 22:21:28
だよなー。
何でポインタ使わんのやろう。つーか、ぶっちゃけ構造体でそれぞれ別領域取ったっていいだろうに・・・。
全体的に意味の分からんソースです。
返信する

コメントを投稿