This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: typeof and bitfields


On Jan 13, 2005, at 3:58 PM, Andrew Pinski wrote:


On Jan 13, 2005, at 6:56 PM, Matt Austern wrote:


This was obviously a deliberate change. However, I don't see any mention about it in the part of the manual that documents typeof. I also can't guess why this should be different in C and in C++, or what the rationale for the change might have been in the first place. Sure, applying sizeof or alignof to a bit-field makes no sense. But typeof? X::n has a perfectly good type, as the C++ compiler understands.

The type of a bit-field is no longer the under lying type. But the correct type which is required by the C standard.

Sorry, I don't understand how that answers my question. As I read the C standard (6.7.2.1), it's quite clear that struct members declared as bit-fields still have types. In
struct X { int n : 1 };
the type of the field "n" is int. The C standard makes it quite clear that bit-fields can have types int, unsigned int, _Bool, and possibly other types.


So given that "n" has a type, what's the rationale for saying that users aren't allowed to look at that type using typeof? The C++ compiler knows that the type of that field is "int", and I can't think of any reason why the C compiler shouldn't know that too.

--Matt


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]