背景
当你花几年时间写Haskell,然后回到裸机C代码时会发生什么:
问题
一个函数是否可以将其返回类型作为指向自身的指针?如果是这样,语法是什么?
函数名称在函数体内是否在作用域内?或者我可以获取当前正在执行的函数的地址吗?
例如:
void foo() {
callmeback(&foo); // is this legal
}
为什么要这样做?
我有一个状态机处理用户输入的一些非常有限的控件,这意味着两个输入操作必须服务于多个不同的模式。我正在重构我的代码,使其更加易于维护,而不是充满switch语句和全局变量的混乱代码。如果我在Haskell中工作,我会调用当前模式函数与用户输入,并返回一个函数以便于随后的输入调用——无论是它自己还是新模式的处理程序。我开始尝试在C中实现这一点,但发现我不知道如何编写处理程序函数的类型。如果这行不通,我只需设置一个全局变量来存储下一个处理程序并继续生活,但我还是想问一下是否可以像在函数式语言中那样执行。
对于那些好奇的人,这一切都在ESP32上运行,这是一个更强大的处理器,但类似于Arduino所配备的处理器。
indent
):struct fun { struct fun (*fun)(int); }; struct fun fun(int x){ struct fun r = {fun}; printf("%d\n", x); return r; } int main(void){ fun(45).fun(32).fun(78); }```
- user10678532