I had a go at building ecl with C compiler using c23 mode (i.e. -std=c23
argument in CFLAGS)
and apart from an easy to fix "typedef bool" issue, there is more, and
quite hard to understand:
CFLAGS="-std=c23" ./configure && make
[...]
dpp: /home/dima/software/ecl/src/c/read.d ->
read.o.c[...]/home/dima/software/ecl/src/c/read.d: In function
‘init_read’:/home/dima/software/ecl/src/c/read.d:2023:39: error:
passing argument 1 of ‘ecl_make_cfun’ from incompatible pointer type
[-Wincompatible-pointer-types] 2023 | #define make_cf3(f)
ecl_make_cfun((f), ECL_NIL, NULL, 3) |
^~~ | | |
union cl_lispunion * (*)(union
cl_lispunion *, union cl_lispunion
*)/home/dima/software/ecl/src/c/read.d:2047:29: note: in expansion of
macro ‘make_cf2’ 2047 | | ^ In
file included from /home/dima/software/ecl/build/ecl/ecl.h:82,
from /home/dima/software/ecl/src/c/read.d:16:/home/dima/software/ecl/build/ecl/external.h:427:58:
note: expected ‘cl_objectfn_fixed’ {aka ‘union cl_lispunion *
(*)(void)’} but argument is of type ‘union cl_lispunion * (*)(union
cl_lispunion *, union cl_lispunion *)’ 427 | extern ECL_API cl_object
ecl_make_cfun(cl_objectfn_fixed c_function, cl_object name, cl_object
block, int narg); |
~~~~~~~~~~~~~~~~~~^~~~~~~~~~
see
https://gitlab.com/embeddable-common-lisp/ecl/-/issues/775
Any ideas how to fix this?
Dima