2014-09-30 8 views
10

Ich fange an, C++ zu lernen. In den IDE Codeblöcke, das kompiliert:Funktioniert die Reihenfolge in C++?

#include <iostream> 
using namespace std; 

void hi() { 
    cout << "hi" << endl; 
} 

int main() { 
    hi(); 
    return 0; 
} 

Aber dies nicht:

int main() { 
    hi(); 
    return 0; 
} 

void hi() { 
    cout << "hi" << endl; 
} 

Es gibt mir den Fehler:

error: 'hi' was not declared in this scope

Sollte bestellen Materie in C++ funktionieren? Ich dachte es nicht. Bitte klären Sie das Problem.

+1

Scheint, wie dies ein Duplikat sein könnte ... – crashmstr

+0

Funktionen sollten zumindest vor der Verwendung deklariert werden. Aber sobald Sie sie erklärt haben, ist die Reihenfolge egal (oder sehr marginal). Für kurze Funktionen könnte es * leicht * besser sein, verwandte Funktionen zu gruppieren (zB 'f' vor' g', wenn 'g'' f' heißt), vielleicht wegen Cache-Problemen. Aber das ist oft irrelevant (und der Compiler wird oft die generierte Funktionsreihenfolge neu spiegeln). –

+0

Ich würde vorschlagen, dass Sie ein Buch über C++ erhalten, anstatt zu versuchen, die Sprache zu lernen, indem Sie in einer IDE spielen. –

Antwort

27

Ja, Sie müssen mindestens deklarieren die Funktion, bevor Sie es aufrufen, auch wenn die eigentliche Definition erst danach kommt.

Deshalb deklarieren Sie oft die Funktionen in Header-Dateien, dann #include sie an der Spitze Ihrer cpp-Datei. Dann können Sie die Funktionen in beliebiger Reihenfolge verwenden, da sie bereits effektiv deklariert wurden.

Hinweis in Ihrem Fall könnten Sie dies getan haben. (working example)

void hi(); // This function is now declared 

int main() { 
    hi(); 
    return 0; 
} 

void hi() { // Even though the definition is afterwards 
    cout << "hi" << endl; 
} 
Verwandte Themen