🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Paul Eggert Mon, 02 Nov 1992 21:29
<varargs.h> + <stdio.h> generates empty decl warning (GCC 2.3.1)
#42
Author: 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; }
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads