ところで、共用体(union)って使ったことある?・・・


【訃報】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で名前付けてアクセス出来るから
ソースが見やすくなった。

通信や組み込み用途では重宝する。


コメント