This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [C++ PATCH] warning about empty extern "C" structures


On Wed, May 17, 2006 at 05:18:02PM +0200, Gabriel Dos Reis wrote:
> Roman Kononov <kononov195-far@yahoo.com> writes:
> 
> | This patch adds an option for g++ to emit a warning when it sees
> |    extern "C" { struct foo {}; }
> | Such empty structures have different sizes in C++ and C modules. Linked
> | together the modules make the life painful. Supplying -Wempty-c-struct
> | option tells g++ to warn. Default is not to warn.
> 
> I don't understand this.  
> 
> [ I understand that empty structs are invalid in C. ]

But not in GNU C:

GCC permits a C structure to have no members:

     struct empty {
     };

 The structure will have size zero.  In C++, empty structures are part
of the language.  G++ treats empty structures as if they had a single
member of type `char'.



It's exactly that distinction that this patch would warn about; I think
it's a good idea, and I'd even suggest warning about it in -Wall
(maybe not in system headers?)

-- 
Daniel Jacobowitz
CodeSourcery


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]