Article View: gnu.gcc.bug
Article #42<varargs.h> + <stdio.h> generates empty decl warning (GCC 2.3.1)
From: Paul Eggert
Date: Mon, 02 Nov 1992 21:29
Date: Mon, 02 Nov 1992 21:29
370 lines
4533 bytes
4533 bytes
Given the program:
#include <varargs.h>
#include <stdio.h>
main() { return 0; }
GCC 2.3.1 (sparc, SunOS 4.1.2, with fixincludes run) outputs:
In file included from /reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/stdarg.h:32, from /reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/stdio.h:2, from T.c:2:
/reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/va-sparc.h:45: warning: useless keyword or type name in empty declaration
The problem is that va-sparc.h is included twice (once by <stdio.h>), but it
isn't designed for this. At the end of this message I'll enclose the
preprocessor output that pinpoints the problem.
Here is a patch for va-sparc.h. I think similar patches need to be applied to
the other va-* files.
Mon Nov 2 21:17:40 1992 Paul Eggert (eggert@twinsun.com)
* va-sparc.h (va_end): Protect against multiple inclusion.
===================================================================
RCS file: va-sparc.h,v
retrieving revision 2.3
retrieving revision 2.3.1.1
diff -c -r2.3 -r2.3.1.1
*** va-sparc.h 1992/09/25 05:47:08 2.3
--- va-sparc.h 1992/11/02 21:17:40 2.3.1.1
***************
*** 42,48 ****
--- 42,50 ----
(__builtin_saveregs (), (AP) = ((char *) &__builtin_va_alist))
#endif
+ #ifndef va_end
void va_end (__gnuc_va_list); /* Defined in libgcc.a */
+ #endif
#define va_end(pvar)
#define __va_rounded_size(TYPE) \
===================================================================
Here the output of gcc -E on the test program shown above.
The problem is the `void ;' line.
# 1 "T.c"
# 1 "/reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/varargs.h" 1 3
# 1 "/reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/va-sparc.h" 1 3
typedef char * __gnuc_va_list;
void va_end (__gnuc_va_list);
# 78 "/reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/va-sparc.h" 3
# 11 "/reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/varargs.h" 2 3
# 102 "/reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/varargs.h" 3
# 120 "/reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/varargs.h" 3
typedef __gnuc_va_list va_list;
# 1 "T.c" 2
# 1 "/reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/stdio.h" 1 3
# 1 "/reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/stdarg.h" 1 3
# 1 "/reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/va-sparc.h" 1 3
# 18 "/reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/va-sparc.h" 3
void ;
# 78 "/reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/va-sparc.h" 3
# 32 "/reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/stdarg.h" 2 3
# 77 "/reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/stdarg.h" 3
# 140 "/reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/stdarg.h" 3
# 2 "/reb0.1/sun4c-4.1.2/lib/gcc-lib/sparc-sun/2.3.1/include/stdio.h" 2 3
extern struct _iobuf {
int _cnt;
unsigned char *_ptr;
unsigned char *_base;
int _bufsiz;
short _flag;
char _file;
} _iob[];
extern struct _iobuf *fopen();
extern struct _iobuf *fdopen();
extern struct _iobuf *freopen();
extern struct _iobuf *popen();
extern struct _iobuf *tmpfile();
extern long ftell();
extern char *fgets();
extern char *gets();
extern char *sprintf();
extern char *ctermid();
extern char *cuserid();
extern char *tempnam();
extern char *tmpnam();
# 2 "T.c" 2
main() { return 0; }
Technical Details
Message-ID:
<9211022129.AA04230@farside.twinsun.com>Path:
arc1-ca.pugleaf.net!sparky!uunet!portal!lll-winken!iggy.GW.Vitalink.COM!cs.widener.edu!umn.edu!spool.mu.edu!caen!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!twinsun.COM!eggertShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!portal!lll-winken!iggy.GW.Vitalink.COM!cs.widener.edu!umn.edu!spool.mu.edu!caen!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!twinsun.COM!eggert From: eggert@twinsun.COM (Paul Eggert) Newsgroups: gnu.gcc.bug Subject: <varargs.h> + <stdio.h> generates empty decl warning (GCC 2.3.1) Message-ID: <9211022129.AA04230@farside.twinsun.com> Date: 2 Nov 92 21:29:29 GMT Sender: gnulists@ai.mit.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 370 Approved: bug-gcc@prep.ai.mit.edu