On 4/30/24 14:49, Qing Zhao wrote:
On Apr 30, 2024, at 15:45, Qing Zhao <qing.z...@oracle.com> wrote:
gcc/doc/extend.texi | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 7b54a241a7bf..cba98c8aadd7 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -42,6 +42,8 @@ extensions, accepted by GCC in C90 mode and in C++.
* Named Address Spaces::Named address spaces.
* Zero Length:: Zero-length arrays.
* Empty Structures:: Structures with no members.
+* Flexible Array Members in Unions:: Unions with Flexible Array
Members.
+* Flexible Array Members alone in Structures:: Structures with
only Flexible Array Members.
* Variable Length:: Arrays whose length is computed at run time.
* Variadic Macros:: Macros with a variable number of arguments.
* Escaped Newlines:: Slightly looser rules for escaped newlines.
@@ -1873,6 +1875,38 @@ The structure has size zero. In C++, empty
structures are part
of the language. G++ treats empty structures as if they had a single
member of type @code{char}.
+@node Flexible Array Members in Unions
+@section Unions with Flexible Array Members
+@cindex unions with flexible array members
+@cindex unions with FAMs
+
+GCC permits a C99 flexible array member (FAM) to be in a union:
+
+@smallexample
+union with_fam @{
+ int a;
+ int b[];
+@};
+@end smallexample
+
+If all the members of a union are flexible array member, the size of
It’s for the following case:
union with_fam_3 {
char a[];
int b[];
}
And also include: (the only member of a union is a flexible array
member as you mentioned below)
union with_fam_1 {
char a[];
}
So, I think the original sentence:
“If all the members of a union are flexible array member, the size of”
Should be better than the below:
"If the only member of a union is a flexible array member”
How about the following wording?
"If every member of a union is flexible array member, the size of”
"is a flexible array member", sure.
Jason