2014-09-30 82 views
10

我开始学习C++。在IDE中的代码块,这个编译:在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 2014-09-30 13:40:08

+0

功能至少应该在使用前声明。但是一旦你宣布他们,订单并不重要(或非常小)。对于短的函数,可能会稍微好一些,以便将相关函数分组(比如'g',如果'g'调用'f'),可能是因为缓存问题。但这通常是不相关的(编译器通常会刷新生成的函数顺序)。 – 2014-10-02 18:37:52

+0

我建议你拿一本关于C++的书,而不是试图通过在IDE中学习语言。 – 2014-10-02 19:27:46

回答

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; 
} 
相关问题