🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.gcc.bug
Article #42

<varargs.h> + <stdio.h> generates empty decl warning (GCC 2.3.1)

#42
From: Paul Eggert
Date: Mon, 02 Nov 1992 21:29
370 lines
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!eggert

Show 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