gcc varargs problem

whoosh whoosh777 at blueyonder.co.uk
Fri Aug 1 21:09:54 UTC 2008


On 01-Aug-08 03:22:56 Sam Varshavchik wrote:
>whoosh writes:

>> On 01-Aug-08 03:00:09 Tom Horsley wrote:
>>>On Fri, 01 Aug 2008 02:36:54 +0100
>>>whoosh <whoosh777 at blueyonder.co.uk> wrote:
>> 
>>>> 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.
>> 
>>>The standard regards it as an error as well, and if you looked up
>>>the insane argument passing conventions for x86_64, you'd know why :-).
>>>If you want to write portable code, look at the stdarg man page and
>>>use the va_start, va_copy, etc. macros.
>> 
>> 
>> ok, from that man page it looks like the way to do it is:
>> 
>> f( va_list *pargs )

>No, that's not what that man page states. See the EXAMPLE section.

>> is there a way to switch off the signedness errors, where 
>> 
>> I use "unsigned char *" for strings to prevent char 255 being
>> 
>> sign extended to EOF?

>Use explicit casts.

too much work,

this is stable code which I have been using for probably 2 years,

-Wall with earlier gcc's no errors at all, thus I need a backward
compatibility option,

once code has stabilised I dont like changing it unless it is a 
GENUINE problem.

for dealing with files, strings are BETTER as "unsigned char *"

than as "char *" as EOF is typically -1, DIFFERENT from the valid char 255

someone on the list has suggested -Wno-pointer-sign 








More information about the fedora-list mailing list