和泉の日記。

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

共用体。

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でシェアする

きょうのひとこと。

2011-07-16 19:35:48 | いつもの日記。
unionを使うにはセンスがいるぞ。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする