* doc/extend.texi (Empty Structures): New.
authorGeoffrey Keating <geoffk@apple.com>
Sat, 12 Apr 2003 01:43:11 +0000 (01:43 +0000)
committerGeoffrey Keating <geoffk@gcc.gnu.org>
Sat, 12 Apr 2003 01:43:11 +0000 (01:43 +0000)
From-SVN: r65497

gcc/ChangeLog
gcc/doc/extend.texi

index b288c77..a7968be 100644 (file)
@@ -1,3 +1,7 @@
+2003-04-11  Geoffrey Keating  <geoffk@apple.com>
+
+       * doc/extend.texi (Empty Structures): New.
+
 2003-04-11  Eric Christopher  <echristo@redhat.com>
 
        * emit-rtl.c (gen_rtx): Fix typos.
index a265672..ad2a02f 100644 (file)
@@ -436,6 +436,7 @@ extensions, accepted by GCC in C89 mode and in C++.
 * Hex Floats::          Hexadecimal floating-point constants.
 * Zero Length::         Zero-length arrays.
 * Variable Length::     Arrays whose length is computed at run time.
+* Empty Structures::    Structures with no members.
 * Variadic Macros::    Macros with a variable number of arguments.
 * Escaped Newlines::    Slightly looser rules for escaped newlines.
 * Multi-line Strings::  String literals with embedded newlines.
@@ -1358,6 +1359,21 @@ struct bar c = @{ @{ 1, @{ @} @} @};            // @r{Valid.}
 struct foo d[1] = @{ @{ 1 @{ 2, 3, 4 @} @} @};  // @r{Invalid.}
 @end example
 
+@node Empty Structures
+@section Structures With No Members
+@cindex empty structures
+@cindex zero-size structures
+
+GCC permits a C structure to have no members:
+
+@example
+struct empty @{
+@};
+@end example
+
+The structure will have size zero.  In C++, empty structures are part
+of the language, and the language standard says they have size 1.
+
 @node Variable Length
 @section Arrays of Variable Length
 @cindex variable-length arrays