やっぱ駄目だ。超気になるので改めて書きます。
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はそういう風に同メモリを共有する他の変数に影響がないように
細心の注意を払って使うものだと思うんです。
この記述は、その細心の注意を放棄してるというか逆手にとってるというか。
言語的には許されてるけど、解読性とかメンテナンス性とかの観点から考えると
真逆に突っ走ってる感じです。
そんなわけで、僕はこの記述に反対。大反対。
どうでしょう?
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はそういう風に同メモリを共有する他の変数に影響がないように
細心の注意を払って使うものだと思うんです。
この記述は、その細心の注意を放棄してるというか逆手にとってるというか。
言語的には許されてるけど、解読性とかメンテナンス性とかの観点から考えると
真逆に突っ走ってる感じです。
そんなわけで、僕はこの記述に反対。大反対。
どうでしょう?
参照自体は問題ないけど、strに入れたいのにnum指定はないわー
っていうか、ポインタ使えよと
何でポインタ使わんのやろう。つーか、ぶっちゃけ構造体でそれぞれ別領域取ったっていいだろうに・・・。
全体的に意味の分からんソースです。