The following program
struct X { unsigned n : 1; };
int main() { struct X x; typeof(x.n) tmp = 0; return tmp; }
compiles without error in 3.x, both as C and as C++. In 4.0 it still compiles
without error as C++, but
no longer as C. Nothing in the documentation for typeof
(http://gcc.gnu.org/onlinedocs/gcc/
Typeof.html#Typeof) suggests that typeof behaves differently in C and in C++,
or that there is a
restriction on its use with bitfields.
This may be indirectly related to standard conformance issues, but the relation
can't be very direct;
typeof is a GNU extension, so any documented and consistent behavior is
correct.
We should either change the documenation to say that typeof no longer works
with bitfields in C, or
make it work again.
--
Summary: typeof no longer works for bitfields
Product: gcc
Version: 4.0.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: austern at apple dot com
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: all
GCC host triplet: all
GCC target triplet: all
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19455