>>23
Lisp is considered a metaprogramming language and c isn't, the c preprocessor is a separate metaprogramming language that isn't turing complete shoved into the same standard. C doesn't even have macros but labels. The standard c preprocessor can't go beyond syntactic sugar except for pargma, which will then break the c standard for having the preprocessor no longer be separate.
C can "be extended" by even embedding a lisp jit that takes sexprs and be part of the program, it's turing complete. Quines even make it possible for something recursive of a c inside c instead of using lisp. Projects that currently use c wouldn't like an recursive embedded unoptimised c compiler for c jit that handles some weird representation of c code being held as objects that's accessed from organised pointers and are more likely to use common lisp. Might want to throw in an recursive embedded c preprocessor since that's part of the same standard. This jit is wasting resources but a more complex solution without directly breaking standard could be made without jit, abusing the undefined definition of the execution environment while somehow keeping it the same program.
Arguing semantics, couldn't resist, how far meta has gone.