From: daz Date: 2005-07-04T16:24:15+09:00 Subject: Compile of ext\ripper\ripper.c fails during 1.9 [bccwin] build Hi, ripper.c in 1.9.0 (2005/06/28) gives the following errors from a bcc 5.5 compile: -------------------------- Error E2342 ripper.y 4396: Type mismatch in parameter 'msg' (wanted 'const signed char *', got 'undefined') in function parser_yyerror [...] Error E2342 ripper.y 8833: Type mismatch in parameter 's' (wanted 'const signed char *', got 'undefined') in function ripper_intern Error E2356 ripper.y 8854: Type mismatch in redeclaration of 'ripper_compile_error' Error E2344 ripper.y 406: Earlier declaration of 'ripper_compile_error' Error E2342 ripper.y 8868: Type mismatch in parameter 'fmt' (wanted 'const signed char *', got 'undefined') in function ripper_warn0 Error E2342 ripper.y 8877: Type mismatch in parameter 'fmt' (wanted 'const signed char *', got 'undefined') in function ripper_warnI Error E2342 ripper.y 8887: Type mismatch in parameter 'fmt' (wanted 'const signed char *', got 'undefined') in function ripper_warnS Error E2342 ripper.y 8887: Type mismatch in parameter 'str' (wanted 'const signed char *', got 'undefined') in function ripper_warnS Error E2342 ripper.y 8896: Type mismatch in parameter 'fmt' (wanted 'const signed char *', got 'undefined') in function ripper_warning0 -------------------------- HAVE_STDARG_PROTOTYPES is defined. 1.9.0-2005.06.28\bccwin32>set BISON_SIMPLE=D:\UNIX\usr\local\share\bison.simple 1.9.0-2005.06.28\bccwin32>make bison 1.28 is from http://unxutils.sourceforge.net/ ( #line 3 "/usr/local/share/bison.simple" /* This file comes from bison-1.28. */ ) To build Ruby, I bypassed ripper because I hadn't time to debug it but I wonder if it's related to this macro: #define parser ((struct parser_params*)parser_v) ... and its effect on a function declaration containing an argument with the name "parser": static void ripper_compile_error(struct parser_params *parser, const char *fmt, ...) I would expect the preprocessor to expand it to this horrible mess: static void ripper_compile_error(struct parser_params *((struct parser_params*)parser_v), const char *fmt, ...) ... which is a redeclaration (doesn't match the prototype) and a "type mismatch". The ripper_warn___() functions also have "parser" in their argument names. Some of the other errors may be caused as a result. If needed, e-mail tar.gz compiler tests to daz[@]d10[.]karoo[.]co[.]uk . I hope this is helpful to Aoki-san. daz