2014-09-30 16 views
10

Sto iniziando a imparare C++. Nei codeblocks IDE, questo compila:L'ordine delle funzioni è importante in C++?

#include <iostream> 
using namespace std; 

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

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

Ma questo non lo fa:

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

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

Mi dà l'errore:

error: 'hi' was not declared in this scope

dovrebbe funzionare indipendentemente ordine in C++? Pensavo che non fosse così. Si prega di chiarire il problema.

+1

Sembra che questo potrebbe essere un duplicato ... – crashmstr

+0

funzioni dovrebbero almeno essere dichiarate prima di essere utilizzato. Ma una volta che li hai dichiarati, l'ordine non ha importanza (o molto marginalmente). Per le funzioni brevi, potrebbe essere * leggermente * migliore per raggruppare le funzioni correlate (ad esempio 'f' prima di' g' se 'g' chiama' f'), forse a causa di problemi di cache. Ma questo è spesso irrilevante (e il compilatore spesso rifletterà l'ordine della funzione generata). –

+0

Suggerirei di ottenere un libro su C++ invece di cercare di imparare la lingua giocando in un IDE. –

risposta

27

Sì, è necessario almeno dichiarare la funzione prima di chiamarla, anche se la definizione effettiva non arriva fino a dopo.

Ecco perché si dichiarano spesso le funzioni nei file di intestazione, quindi #include nella parte superiore del file cpp. Quindi è possibile utilizzare le funzioni in qualsiasi ordine, poiché sono già state effettivamente dichiarate.

Nota nel tuo caso avresti potuto farlo. (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; 
} 
Problemi correlati