Path: ccsf.homeunix.org!ccsf.homeunix.org!news1.wakwak.com!nf1.xephion.ne.jp!onion.ish.org!gcd.org!jindaiji.chofu.tokyo.jp!mmcatv.co.jp!newsfeed.media.kyoto-u.ac.jp!oix.u-ryukyu.ac.jp!u-ryukyu.ac.jp!ie.u-ryukyu.ac.jp!gama.is.tsukuba.ac.jp!not-for-mail From: MAEDA Atusi Newsgroups: fj.comp.lang.c Subject: Re: =?ISO-2022-JP?B?GyRCOT1CJEJOJHIlXSUjJXMlPyRHO0hNUSQ5JGsbKEI=?= =?ISO-2022-JP?B?GyRCJEglKCVpITwkSCRKJGsbKEI=?= Date: 25 Feb 2005 22:13:57 +0900 Organization: Science Information Processing Center, University of Tsukuba Lines: 31 Message-ID: References: <20050222233633.24d0a7a9.forest@ma.kcom.ne.jp> <3991313news.pl@rananim.ie.u-ryukyu.ac.jp> <20050223224334.76b4355a.forest@ma.kcom.ne.jp> <3991325news.pl@rananim.ie.u-ryukyu.ac.jp> NNTP-Posting-Host: maedapc.cc.tsukuba.ac.jp Mime-Version: 1.0 (generated by SEMI 1.14.3 - "Ushinoya") Content-Type: text/plain; charset=ISO-2022-JP X-Trace: gama.is.tsukuba.ac.jp 1109337014 11832 130.158.72.55 (25 Feb 2005 13:10:14 GMT) X-Complaints-To: usenet@gama.is.tsukuba.ac.jp NNTP-Posting-Date: 25 Feb 2005 13:10:14 GMT User-Agent: Nana-gnus/6.13.12 SEMI/1.14.3 (Ushinoya) FLIM/1.14.4 (=?ISO-8859-4?Q?Kashiharajing=FE-mae?=) APEL/10.3 Emacs/20.7 (i386-vine-linux-gnu) MULE/4.1 (AOI) Cache-Post-Path: maedapc.cc.tsukuba.ac.jp!maeda@localhost X-Cache: nntpcache 3.0.1 (see http://www.nntpcache.org/) Xref: ccsf.homeunix.org fj.comp.lang.c:500 神戸隆行 writes: > > あぁ、そうか。Hoge の最初のint member にアクセスするのに、pI > > にキャストしてもうまくいくとは限らないってことね。そういうア > > ーキテクチャってあるのかな? > > まぁ、それはあるんですけれども…。 > ポインタをアドレスを指すものと意味づければ殆どの場合に多分動くんですが…。 > > 形式的な意味に従って型の違うポインタへのキャストは極力避けておいた方がいいかと。 > 構造体へのポインタと先頭のメンバへのポインタを不用意に混同してキャストして使ってると > なんといっても読み難いですし、 読み難いし、不用意にしない方がよいのは同意ですが、ちょっと language lawyer っぽい小うるさいことをいわせていただくと、 6.7.2.1 Structure and union specifiers ... A pointer to a structure object, suitably converted, points to its initial member (or if that member is a bit-field, then to the unit in which it resides), and vice versa. There may be unnamed padding within a structure object, but not at its beginning. ですので、Cでは一応どの環境でも動きます。 (まあ、普通は、 &(struct_ptr->initial_member) と書くだろうとは思いますが。) 前田敦司