2014-09-30 8 views
10

Я начинаю изучать C++. В IDE CodeBlocks, это составляет:Имеет ли смысл функционирования функции в C++?

#include <iostream> 
using namespace std; 

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

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

Но это не делает:

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

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

Это дает мне ошибку:

error: 'hi' was not declared in this scope

Если функция порядка материи в C++? Я думал, что нет. Просьба уточнить проблему.

+1

Похоже, это может быть дубликатом ... – crashmstr

+0

функции должны, по крайней мере, быть объявлены перед использованием. Но как только вы их объявили, порядок не имеет значения (или очень незначительно). Для коротких функций может быть * чуть лучше группировать связанные функции (например, 'f' перед' g', если 'g' вызывает' f'), возможно, из-за проблем с кешем. Но это часто не имеет значения (и компилятор часто отказывает сгенерированный порядок функций). –

+0

Я бы предположил, что вы получите книгу на C++ вместо того, чтобы пытаться выучить язык, играя в среде IDE. –

ответ

27

Да, вы должны, по крайней мере, объявить функцию, прежде чем вы ее назовете, даже если фактическое определение не появится до этого.

Вот почему вы часто объявляете функции в заголовочных файлах, затем #include их в верхней части вашего файла cpp. Затем вы можете использовать функции в любом порядке, так как они уже были объявлены.

Обратите внимание, что в вашем случае вы могли бы это сделать. (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; 
}