Xiu-Yan Wang wrote:
> Hi all,
>
> When using cc bundled in SUNWspro to compile codes with bit-field
> definitions like the following:
>
> typedef struct test_bitfield_s {
> uint64_t
> field0 : 8,
> field1 : 8,
> field2 : 8,
> field3 : 8,
> field4 : 8,
> field5 : 8,
> field6 : 8,
> field7 : 8,
> }test_bitfield_t;
>
> I got the below error messages:
>
> "../include/message.h", line 48: invalid type for bit-field: field0
> "../include/message.h", line 49: invalid type for bit-field: field1
> "../include/message.h", line 50: invalid type for bit-field: field2
> "../include/message.h", line 51: invalid type for bit-field: field3
> "../include/message.h", line 52: invalid type for bit-field: field4
> "../include/message.h", line 53: invalid type for bit-field: field5
> "../include/message.h", line 54: invalid type for bit-field: field6
> "../include/message.h", line 55: invalid type for bit-field: field7
>
> The error messages would disappear if uint64_t was replaced with
> uint8_t, uint16_t, or uint32_t. So it seems that for cc contained in
> SUNWspro 64-bit type can not be used in bit-field definitions. Could
> someone familiar with the compiler confirm this or correct me if I'm
> wrong?
>
> BTW, gcc allows 64-bit type to be used in bit-field definitions.
This code compiles fine with Studio 12::
===============================================
#include <sys/types.h>
#include <stdlib.h>
typedef struct test_bitfield_s {
uint64_t
field0 : 8,
field1 : 8,
field2 : 8,
field3 : 8,
field4 : 8,
field5 : 8,
field6 : 8,
field7 : 8;
} test_bitfield_t;
int
main(int argc, char **argv) {
exit(0);
}
===============================================
But with Studio 11 from /ws/onnv-tools, I get
the same error messages that you do
$ /opt/SUNWspro/bin/cc -V
cc: Sun C 5.9 SunOS_i386 2007/05/03
$ /ws/onnv-tools/SUNWspro/SS11/bin/cc -V
cc: Sun C 5.8 Patch 121016-05 2007/01/10
usage: cc [ options] files. Use 'cc -flags' for details
I think you've found a bug in the compilers.
I've logged
6615708 Studio11 doesn't grok uint64_t bitfields
and included you on the interest list.
James C. McPherson
--
Senior Kernel Software Engineer, Solaris
Sun Microsystems
_______________________________________________
tools-discuss mailing list
[email protected]