Yes, while gotos are frowned upon, they're still allowed in C/C++.
Where to goto? A label, of course.
Where to goto? A label, of course.
I wrote this:
#include <stdio.h>
void f() {
printf("f");
}
int main() {
goto f;
return 0;
}
It creates error: foo.c:8:10: error: use of undeclared label 'f'
goto f;
^
1 error generated.
How can we goto a function name?fun note: C-- has something like that! iirc it's like calling a function, but reusing the current stackframe:
jump f(expr1,. . .,exprn);
> "the `jump` statement performs a control jump but carrying parameters. It has as target [...] a procedure address and can optionally transfer arguments to that procedure."https://www.microsoft.com/en-us/research/wp-content/uploads/...
The concept is not so unique as you might think tho; the more commonly used term is "tail call".
re: C--, i think it's mostly used as a compiler IR. (notably in Haskell's GHC)