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