Return to BSD News archive
Path: sserve!newshost.anu.edu.au!munnari.oz.au!bruce.cs.monash.edu.au!monu6!escargot!minyos.xx.rmit.OZ.AU!rxklam
From: rxklam@minyos.xx.rmit.OZ.AU (Luke Mewburn)
Newsgroups: comp.os.386bsd.bugs
Subject: stdio.h & __sputc problems with gcc -ansi
Date: 14 Jun 1993 09:19:57 GMT
Organization: Even More NetBSD Hackers Inc, RMIT div.
Lines: 49
Message-ID: <1vhfrt$p3p@escargot.xx.rmit.OZ.AU>
Reply-To: zak@rmit.edu.au
NNTP-Posting-Host: minyos.xx.rmit.oz.au
I've discovered an annoying problem in <stdio.h> when running
gcc (1.40 or whatever's the default) with -ansi, and a project with
multiple .o files.
When gcc gets around to linking, I get "multiply defined __sputc"
errors (I can't remember the exact text, this is from memory).
Looking in stdio.h, I see that __sputc is defined as
static __inline
if __GNUC__ and __STDC__ defined (i.e, gcc with -ansi.)
Well, I can't see the problem, and there are times when I would really
like to do `-ansi -pedantic' on a project.
Got any ideas?
Here's the relevant code from stdio.h btw:
-- file: include/stdio.h --
/*
* The __sfoo macros are here so that we can
* define function versions in the C library.
*/
#if defined(__GNUC__) && defined(__STDC__)
static __inline int __sputc(int _c, FILE *_p) {
if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
return (*_p->_p++ = _c);
else
return (__swbuf(_c, _p));
}
#else
/*
* This has been tuned to generate reasonable code on the vax using pcc.
*/
#define __sputc(c, p) \
(--(p)->_w < 0 ? \
(p)->_w >= (p)->_lbfsize ? \
(*(p)->_p = (c)), *(p)->_p != '\n' ? \
(int)*(p)->_p++ : \
__swbuf('\n', p) : \
__swbuf((int)(c), p) : \
(*(p)->_p = (c), (int)*(p)->_p++))
#endif
-- end file --
--
Luke Mewburn [Zak], <zak@rmit.edu.au>
"Lawyers - the only group for which ignorance of the law is not a crime" - anon