doofe situation mit funktions-abhängigkeiten ?!
-
hey,
ich steck hier grad in nem deadlock.ich habe ein funktion "run()", die in einer Endlosschleife:
while(1){...func2()...}
das Programm am laufen hält.
jetzt ist es aber so, dass ich an einer stelle innerhalb des anweisungsblocks dieser endlosschleife die schleife neu starten will.
das ganze passiert in einer funktion "func2":
run();
Das Problem: Ich kann es nicht compilen, denn die Funktion "func2" steht im Code überhalb der Funktion "run", deshalb sagt er mir da :
undefined reference to run.
das oberdumme dabei: wie ihr oben in der while-schleife seht, benutzt die funktion "run" die funktion "func2", deshalb kann ich die auch nicht überhalb von func2 verschieben, weil es dann genau das selbe Problem gibt, nur andersrum:
undefined reference to func2.
Jetzt die Frage: Gibt es irgendwelche Befehle, mit denen ich einfach an eine Stelle im Programm springen kann? Oder was soll ich da jetzt machen?
Danke :xmas1:
-
void run(); void func2() { run(); } void run() { func2(); }
das nennt sich forward-deklaration.
-
okay, nur damit ich das richtig verstehe:
legt man da eine funktion "run" an und überschreibt sie später, oder ist das erste "run" sozusagen nur eine info für den compiler so á la: kümmer dich mal nicht drum ob es die funktion jetzt schon gibt.. ?
-
mit einer forward-deklaration sagst du dem compiler: es gibt eine funktion mit dieser signatur. das reicht dem compiler erstmal. um den rest muss der linker sich kümmern.
mit diesem prinzip funktionieren headerfiles in c/c++.