• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: structs in Mutable containers
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: structs in Mutable containers


  • Subject: Re: structs in Mutable containers
  • From: "Sean McBride" <email@hidden>
  • Date: Tue, 16 Sep 2008 12:57:35 -0400
  • Organization: Rogue Research

On 9/16/08 9:45 AM, Clark Cox said:

>> NSPoint and CGPoint may be the same now, but they may not always be.
>> (Consider that NSAffineTransformStruct and vImage_AffineTransform were
>> the same, but the former changed from float to CGFloat and the latter
>> stayed float, even in 64 bit.)
>>
>> Also, they are separate structs to the compiler, so it is free (though
>> unlikely) to align and pack them differently.
>
>No, it is not. The C standard guarantees that two structs with the
>same initial sequence of members have the same layout as far as the
>common members are concerned. The following is perfectly legal code:
>
>#include <stdio.h>
>
>typedef struct Foo { float x, y; } Foo;
>typedef struct Bar { float x, y; } Bar;
>
>int main() {
>  Foo f = {123,456};
>
>  //Treat f as if it is a Bar:
>  printf("x = %f\n", ((Bar*)&f)->x);
>  printf("y = %f\n", ((Bar*)&f)->y);
>
>  return 0;
>}

Well, I am certainly no language lawyer.  Perhaps I am confusing
things.  I am thinking of gcc's "warning: dereferencing type-punned
pointer will break strict-aliasing rules".  For example, compile your
snippit above like so:

$ gcc-4.2 -Wall -Wextra -fstrict-aliasing test.m
test.m: In function 'main':
test.m:10: warning: dereferencing type-punned pointer will break strict-
aliasing rules
test.m:11: warning: dereferencing type-punned pointer will break strict-
aliasing rules

This is what I was remembering:
<http://www.cellperformance.com/mike_acton/2006/06/
understanding_strict_aliasing.html#introduction>

--
____________________________________________________________
Sean McBride, B. Eng                 email@hidden
Rogue Research                        www.rogue-research.com
Mac Software Developer              Montréal, Québec, Canada


_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: structs in Mutable containers
      • From: "Clark Cox" <email@hidden>
References: 
 >structs in Mutable containers (From: "Christian Giordano" <email@hidden>)
 >Re: structs in Mutable containers (From: Graham Cox <email@hidden>)
 >Re: structs in Mutable containers (From: "Sean McBride" <email@hidden>)
 >Re: structs in Mutable containers (From: "Clark Cox" <email@hidden>)

  • Prev by Date: (Newb) Multiple NSWindowControllers and bindings
  • Next by Date: Re: (Newb) Multiple NSWindowControllers and bindings
  • Previous by thread: Re: structs in Mutable containers
  • Next by thread: Re: structs in Mutable containers
  • Index(es):
    • Date
    • Thread