Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This is one of those problems that Tail Call Elimination cleanly addresses. The "obvious" approach to writing an FSM does exactly what you'd expect.


C does not guarantee tail call elimination.

But you can do the same with an event loop that cleanly avoids goto.


Nowadays you can direct clang to require tail-call elimination in C. [1] In gcc you can provide the optimization flag, -foptimize-sibling-calls, which is automatically selected at -O2, -O3, or -Os. [2]

[1] https://clang.llvm.org/docs/AttributeReference.html#musttail

[2] https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html


Not if you don't know how to write in only tail calls. Try explaining tail call elimination to one of these programmers learning how to write a state machine (=


Gotos are great approach for writing a Flying Spaghetti Monster!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: