Brendon Costa <[EMAIL PROTECTED]> writes:

| Hi all,
| 
| I have just come across a small difference in the way the C an C++
| front ends handle anonymous struct types which is causing me some
| grief. In particular the following code:
| 
| typedef struct
| {
|     int b1;
|     int b2;
| } Blah;
| 
| void Function(Blah* b) {}
| 
| When i get the Blah type in the function above (After removing the
| pointer) i then use TYPE_MAIN_VARIANT on it and do some special
| processing on the resulting main varient type.

C++ defines a notion of "class name for linkage purpose" -- that is a
notion used to define the One Definition Rule. 
In general the TYPE_NAME of TYPE_MAIN_VARIANT is the class name for
linkage purpose.  
The behaviour you reported on implements the rule 7.1.3/5:

   If the typedef declaration defines an unnamed class (or enum), the
   first typedef-name declared by the declaration
   to be that class type (or enum type) is used to denote the class type
   (or enum type) for linkage purposes only (3.5).

-- Gaby

Reply via email to