gpt4 book ai didi

c - C 怎么可能没有内部函数,而用 C 实现的语言却可以呢?

转载 作者:太空狗 更新时间:2023-10-29 15:49:59 25 4
gpt4 key购买 nike

我最近一直在使用 Lua 等脚本语言编写代码,匿名内部函数的存在让我开始思考。一个用C实现的语言,比如Lua,怎么会有内部函数,而在C中,无论你做什么,都无法逃避函数必须在编译时提前声明的事实?这是否意味着在 C 中,实际上有一种方法可以实现内部函数,而只需实现一个庞大的代码库即可使它们成为可能?

例如

void *block = malloc(sizeof(1) * 1024); // somehow 
// write bytes to this memory address to make it operate
// like an inner function?
// is that even possible?
char (*letterFunct)(int) = ((char (*letterFunct)(int))block;
// somehow trick C into thinking this block is a function?
printf("%c\n", (*letterFunct)(5)); // call it

在理解为什么某些具有高级功能(类、对象、内部函数、多线程)的语言可以在没有所有这些功能的语言中实现时,我缺少什么弥合这一差距的关键概念?

最佳答案

仅仅因为特定语言的编译器/解释器是用 C 编写的,并不意味着该语言必须翻译成 C 然后进行编译。

我不知道 Lua,但在 Java 的情况下,代码被编译为 Java 字节码,Java VM 读取和解释(松散地说)。

原来的C编译器是用汇编写的,而原来的C++编译器是用C写的,所以用低级语言编写高级语言的编译器是可能的。

关于c - C 怎么可能没有内部函数,而用 C 实现的语言却可以呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48873784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com