On 01-Aug-08 15:00:59 Steven W. Orr wrote: >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. I have changed it to: va_list args ; va_copy( args, *pargs ) ; which compiles and functions correctly. However earlier gcc's DONT recognise va_copy(), thus I need #if defined( __please_ignore_va_copy__ ) args = *pargs ; #else va_copy( args, *pargs ) ; #endif note that when I do "args = *pargs ; " I am merely assuming that "args" is a pointer, thus "args = *pargs ; " is fine, its only a problem if args is an aggregate. typedef struct anything_at_all *va_list ; f( va_list *pargs ) { va_list args = *pargs ; } is completely fine provided va_list is a pointer. >-- >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. thats the best explanation I have heard! > Listen to me! We are all- 000 >individuals! What if this weren't a hypothetical question? >steveo at syslang.net -- fedora-list mailing list fedora-list@xxxxxxxxxx To unsubscribe: https://www.redhat.com/mailman/listinfo/fedora-list