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