Article View: comp.std.c
Article #5474trailing comma inside enum...bug or feature?
From: David Lai
Date: Tue, 06 Dec 1988 18:42
Date: Tue, 06 Dec 1988 18:42
48 lines
2377 bytes
2377 bytes
Why does something like:
/* taken straight out of X11/Intrinsic.h, from Xwindows from MIT */
typedef enum {
XtGeometryYes, /* Request accepted. */
XtGeometryNo, /* Request denied. */
XtGeometryAlmost, /* Request denied, but willing to take replyBox. */
XtGeometryDone, /* Request accepted and done. */
} XtGeometryResult;
/* note trailing comma after XtGeometryDone */
elicit no complaints from any of the C compilers I use? I have a couple of
theories:
1) This is an archaic remnant from bygone days when enums syntax
allowed trailing commas
2) This is a bug in the original C compiler, from which all other C
compilers were ported from. I suspect this because of the
vast number of systems that X has been ported to using the
above file.
3) The books are wrong, the syntax should really read:
enum_type_def: enum opt_enum_tag { enum_def_list }
| enum opt_enum_tag { enum_def_list , }
4) The C compiler writers were forced to stray from the specification
because of files like the above.
5) Perhaps I'm misinformed, and a trailing comma has some sort of
special hidden meaning...
Is this a bug or feature? Should ANSI compilers allow this? I only caught
this because I'm designing a C parser directly from the specifications.
I hope somebody in the X consortium sees this (and corrects it for the next
release).
The C standard (and every book on C I've seen, including those from
AT&T) says the syntax of an enum declaration is:
enum_type_def: enum opt_enum_tag { enum_def_list }
enum_def_list: enum_const_def
| enum_def_list , enum_const_def
enum_const_def: enum_constant
| enum_constant = expression
--
"What is a DJ if he can't scratch?" - Uncle Jamms Army
The views expressed are those of the author, and not of Visual Edge, nor Usenet.
David Lai (vedge!lai@larry.mcrcim.mcgill.edu || ...watmath!onfcanim!vedge!lai)
Technical Details
Message-ID:
<2174@vedge.UUCP>Path:
arc1-ca.pugleaf.net!utzoo!attcan!uunet!seismo!sundc!pitstop!sun!decwrl!ucbvax!bloom-beacon!mcgill-vision!iros1!vedge!laiShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!attcan!uunet!seismo!sundc!pitstop!sun!decwrl!ucbvax!bloom-beacon!mcgill-vision!iros1!vedge!lai
From: lai@vedge.UUCP (David Lai)
Newsgroups: comp.std.c,comp.windows.x
Subject: trailing comma inside enum...bug or feature?
Summary: enum { a,b,c, } x;
Message-ID: <2174@vedge.UUCP>
Date: 6 Dec 88 18:42:54 GMT
Organization: Visual Edge Software, St. Laurent, Quebec
Lines: 48