Lisp has eval, C can longjmp into a buffer with arbitrary executable data. The latter allows executing raw hex code and is therefore more fundamentally capable:
C can jump to executing with any
assembler/hex opcode block and modify such blocks at runtime, though this
represents a huge security risk of course. LISP cannot do this.