Did you mean a problem executing this program? Actually, I think, compiling this program. Anyway, your function definitions are all wrong. The curly braces {} and semicolons ";" are missing or in the wrong places.
For example:
void goto_forward();
defines a function that returns nothing and does nothing.
Robin2:
Sorry. But that is a perfectly valid line which calls a function called goto_forward() and does not expect any return value.
Whether it is a sensible line in the context of the rest of the program, I have no idea.
...R
Well, it's because it is called from loop() that I think the OP was trying to define it. Also that it's located outside loop() or setup(). Would the compiler not then see it as a function declaration? Or a body-less function is not recognized?
Sovoid doNothing();
is maybe a call, or might be a declaration, or function prototype, while:
void doNothing(){};
is (perhaps) obviously a definition due to the curly braces?
Or is it position dependant?
So why is
void goto_forward();
a call and not a function prototype?
But the bottom line, I think is just a case of careless use of curly braces.
Look at the code. The syntax of that one line is a valid prototype, but it’s obvious from the surrounding code he meant that to be the declaration of a function. Replace the ; with a { and the code make a lot more sense.