From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Wed, 19 Dec 2001 00:08:16 +0300 From: Mikhail Zabaluev To: sisyphus@altlinux.ru Cc: Alexey Voinov Message-ID: <20011218210816.GD2069@localhost.localdomain> Mail-Followup-To: Mikhail Zabaluev , sisyphus@altlinux.ru, Alexey Voinov References: <20011213104410.2f53d941.maxp@ozero.net> <20011218142359.GA1557@voins.local> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20011218142359.GA1557@voins.local> User-Agent: Mutt/1.3.23.2i Subject: [sisyphus] Re: C/C++ compilers (was: =?koi8-r?B?8M8g?= =?koi8-r?B?0M/Xz8TVINPCz9LLySDQwcvF1M/XKQ==?= Sender: sisyphus-admin@altlinux.ru Errors-To: sisyphus-admin@altlinux.ru X-BeenThere: sisyphus@altlinux.ru X-Mailman-Version: 2.0 Precedence: bulk Reply-To: sisyphus@altlinux.ru List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Archived-At: List-Archive: Hello Alexey, On Tue, Dec 18, 2001 at 05:23:59PM +0300, Alexey Voinov wrote: > > Vlad Harchev wrote > > > > Надо основываться на стандарте языка, а не на компиляторе. Хорошо > > > > написанный код соберется всюду. > > > > > > тут есть небольшой нюанс, так как кое-какой вполне норамальный > > > Ц++ код не совсем правильно интерпретируется gcc-2.95 > > > > > > даже если не лезть в темплейтные навороты, > > > хотя plain C уже как-то не совсем ко двору, > > > первое, что приходит в голову > > > > > > struct A { void f(){}; }; struct B: public A { int i; }; > > > > > > sizeof(B) ? > > > > > > (большинство компилеров под ia32 считают, что должно получаться 4, а не 8 ) > > > > В стандарте про гаранитии размеров нет ни слова (кроме того что размер > > потомка будет не меньше размера предка). > Наконец-то докопался до стандарта и нашёл там следующее: > > п. 9.3: > > A class with an empty sequence of members and base class objects is an > empty class. Complete objects and member subobjects of an empty class > type shall have nonzero size.1) > > и далее: > > _________________________ > 1) That is, a base class subobject of an empty class > type may have zero size. > > (На самом деле это не стандарт, а draft от Decembeer 1997, последний, > насколько мне известно. Номер пункта в самом стандарте скорее всего не > совпадает, но то, что там эти слова есть --- точно.) Из этого не следует, что sizeof(B) в вышеприведенном примере должен принимать какое-то строго определенное значение. P.S. Всегда используйте sizeof -- и ваши волосы не покинут вашу голову преждевременно :) -- Stay tuned, MhZ JID: mookid@jabber.org ___________ "The Mets were great in 'sixty eight, The Cards were fine in 'sixty nine, But the Cubs will be heavenly in nineteen and seventy." -- Ernie Banks