Possible Defect Report: "Plain" int
bit-fields.
Consider the code:
int main(void){
struct bits {
unsigned int uibf : 3; /* OK */
signed int sibf : 3; /* OK */
/*plain*/ int pibf : 3; /* ??? */
_Bool bobf : 3; /* OK */
} bits;
return 0;
}
Question: Are "plain" int bit-fields valid?
6.7.2.1 Structure and union specifiers, paragraph 4 has:
A bit-field shall have a type that is a qualified or unqualified version of_Bool,signed int,unsigned int, or some implementation-defined type.
[Missing from that list is "plain" int].
6.7.2 Type specifiers, paragraph 5 has:
Each of the comma-separated sets designates that same type, except that for bit-fields, it is implemetation-defined whether the specifierintdesignates the same type assigned intor the same type asunsigned int.
[So, other parts of C99 assume that "plain" int
bit-fields are valid.]
Suggestion: Add int to 6.7.2.1, paragraph
4.