2010-12-07 118 views
3

函數實現在單獨文件中的正確語法是什麼?例如:獨立文件中的函數實現

foo.h中

int Multiply(const int Number); 

Foo.cpp中

#include "foo.h" 

int Multiply(const int Number) 
{ 
    return Number * 2; 
} 

我看到這個用了很多,但是當我嘗試它,我得到不必做錯誤缺少main()功能。即使在我嘗試編譯工作代碼時,我也會得到這個錯誤。

+1

你應該提到,這應該是一個沒有主的圖書館。只要將項目的配置類型(如果使用Visual Studio)更改爲庫。 – 2010-12-07 16:21:35

回答

7

粗略地說,您需要在正在編譯的某個C++文件中包含main()函數。

當編譯器說,你只需要有一個main()方法的Foo.cpp中裏面,像這樣:

#include "foo.h" 
#include <iostream> 

using namespace std; 

int Multiply(const int Number) 
{ 
    return Number * 2; 
} 

int main() { 
    // your "main" program implementation goes here 
    cout << Multiply(3) << endl; 
    return 0; 
} 

或者你可以在你的主要功能分成不同的文件,像這樣(省略Foo.cpp中在main()塊,如果你打算這樣做):

main.cpp 

#include "foo.h" 
#include <iostream> 

using namespace std; 

int main() { 
    cout << Multiply(3) << endl; 
    return 0; 
} 

然後編譯它像

g++ main.cpp foo.cpp 
+0

`main`函數是否需要返回任何東西?另外,我在``apstring.cpp`文件(它讚揚`apstring.h`)中的任何地方都沒有看到`main`。 – Maxpm 2010-12-07 15:21:58

+0

通常人們做的是單獨的主要功能和「幫手」功能。看到我的編輯 – 2010-12-07 15:23:06

2

C++中的每個程序都是一個或多個的集合翻譯單元,又名源文件。

將這些文件編譯後,鏈接器搜索程序的入口點,即int main()函數。由於它沒有找到它,它會給你一個錯誤。

不要忘記,構建該程序正在生成可執行文件。沒有入口點的可執行文件是無稽之談。