【訃報】C言語およびUNIXの父、デニス・リッチーさんが死去 -享年70
http://raicho.2ch.net/test/read.cgi/newsplus/1318589354/
368 :名無しさん@12周年:2011/10/14(金) 22:12:00.10 ID:aHHSqySd0
ところで、共用体(union)って使ったことある?
今までお目にかかったことがないんだが。
369 :名無しさん@12周年:2011/10/14(金) 22:12:21.72 ID:lLsjRHTj0
>>368
bit 演算とかやる人には便利
371 :名無しさん@12周年:2011/10/14(金) 22:12:55.59 ID:CCJx3PHEP
>>368
unionはCPUに依存するから普通にプログラミングする分にはまず使わない。
376 :名無しさん@12周年:2011/10/14(金) 22:14:17.06 ID:TFydxCie0
>>368
I/Oをbit毎に扱うケースではよく使ったかな。
377 :名無しさん@12周年:2011/10/14(金) 22:14:23.25 ID:mRtgnKl60
>>368
ioctrlとかで
378 :名無しさん@12周年:2011/10/14(金) 22:14:50.99 ID:YTydNpqq0
>>368
ま、あんまり使わないねw
何せCだとキャストでなんでも出来ちゃうからw
379 :名無しさん@12周年:2011/10/14(金) 22:14:53.02 ID:mJWGAIv80
>>368
受信伝文を切り分けるときなんかには重宝する
381 :名無しさん@12周年:2011/10/14(金) 22:15:00.00 ID:6CQiq/3fO
>>368
俺はソケットのプログラミングで少し使ったくらい。
383 :名無しさん@12周年:2011/10/14(金) 22:15:32.15 ID:fOZZ/+hfO
>>368
ビットフィールドと組み合わせて使ったことがある。
384 :名無しさん@12周年:2011/10/14(金) 22:16:18.29 ID:pmUao6vk0
>>368
SCSIとかATAPIのコマンドを受けて解析する時
exFATの32バイトのDEを取得して解析する時
387 :名無しさん@12周年:2011/10/14(金) 22:17:12.50 ID:/owjEN2/0
>>368
バイナリフォーマットが決まってて、モードによって、データのパッキングの仕方が違う場合。
struct のポインタをキャストすれば、同じことができるけど、分かりやすいでしょ?
394 :名無しさん@12周年:2011/10/14(金) 22:19:23.31 ID:hPYJIAjT0
>>368
結構使うけど、管理がしにくいから、使用は推奨しません。
といった感じかなぁ。
396 :名無しさん@12周年:2011/10/14(金) 22:19:45.99 ID:Y6L1Ndp20
>>368
windowsでは良く使うだろ?
特にDirectXとか使う時には
404 :名無しさん@12周年:2011/10/14(金) 22:22:19.31 ID:pmUao6vk0
>>368
あとは8ビットCPUでの組み込みの開発なんかで
プロジェクトのスローガンが「大切に使え血の1バイト〜RAMは限りある資源」
という状態で
union {
なんかの構造体の配列[];
int 型の配列[];
short 型の配列[];
/* 多分(いまマジで)同時には使わないはず */
} wrk_un;
とかを外部変数に
425 :名無しさん@12周年:2011/10/14(金) 22:28:25.98 ID:pnM9G8u90
>>368
良く使ってたw
送られてきたデータの塊から必要な情報を抜き出したい時や、
そのデータ構造内でポインタ使って複雑だった場合、
直接ポインタや配列などで抜き出しても良いんだけど、
共用するデータの構造が決まってる場合unionで名前付けてアクセス出来るから
ソースが見やすくなった。
通信や組み込み用途では重宝する。