gcc varargs problem

Steven W. Orr steveo at syslang.net
Fri Aug 1 14:00:59 UTC 2008


On Thursday, Jul 31st 2008 at 21:36 -0000, quoth whoosh:

=>
=>all gcc's so far have accepted the following code,
=>
=>until now using gcc on Fedora 9:
=>
=>
=>void f( va_list *pargs )
=>{
=>va_list args = *pargs ;
=>...
=>}
=>
=>64 bit Fedora 9's gcc regards this as an error, all the other gcc's eg 
=>on 32 bit Fedora Core 3 have no problem with this.
=>
=>
=>I use this a lot in order to pass var args to another function.
=>eg I have recursive functions which take variable numbers of args
=>and redirect to user supplied functions to process those args.
=>
=>
=>for porting code I dont want to have to rewrite everything,
=>
=>
=>also the gcc gives endless signedness warnings because my
=>code uses 
=>
=>unsigned char *
=>
=>instead of
=>
=>char *
=>
=>for strings, I do that because I need to guarantee that chars are unsigned,
=>
=>in order to avoid the ambiguity of EOF versus 255.

Do not use varargs. Use stdargs. Convert any code that uses varargs to use 
stdargs. See man 3 stdarg.

-- 
Time flies like the wind. Fruit flies like a banana. Stranger things have  .0.
happened but none stranger than this. Does your driver's license say Organ ..0
Donor?Black holes are where God divided by zero. Listen to me! We are all- 000
individuals! What if this weren't a hypothetical question?
steveo at syslang.net




More information about the fedora-list mailing list