food.h
#ifndef _FOOD_H
#define _FOOD_H
class MikanBox
{
public:
MikanBox();
void Add(int addmikan);
void Del(int delmikan);
void Empty();
int GetTotal(){
return total;
}
private:
int total;
};
#endif // _FOOD_H
food.cpp
#include "food.h"
MikanBox::MikanBox()
{
total=0;
}
void MikanBox::Add(int addmikan)
{
total+=addmikan;
}
void MikanBox::Del(int delmikan)
{
total-=delmikan;
if (total<0) Empty();
}
void MikanBox::Empty()
{
total=0;
}
main.cpp
#include <iostream>
using namespace std;
#include "food.h"
int main()
{
MikanBox myMikanBox;
#ifdef KOBA
cout << "Hello Koba!!" << endl;
#elif CASPAR
cout << "Hello Caspar!!" << endl;
#else
cout << "Hello World!!" << endl;
#endif
return 0;
}
指令:先compiler出main.o與food.o這兩個檔案
[root@host ~]# g++ -c main.cpp -o main.o
[root@hots ~]# g++ -c food.cpp -o main.o
再把main.o與food.o這兩個檔案link成maio執行檔
[root@host ~]# g++ main.o food.o -o main
錯誤的!
[root@host ~]# g++ main.cpp -o main
這一個情況是所有的程式碼都是寫在main.cpp這樣才不會有錯誤!!反正,就是要先編成obj檔啦~再link成可執行檔
g++透過-I來指明包含檔案;使用開關-L來指明函式庫檔案位置
例如:我把food.h放到目前目錄下的library目錄下,這個時候我要編譯food.cpp就應該要打以下指令
[root@host ~]# g++ -I library/ -c food.cpp -o food.o
而不需要把food.cpp中的include雙引號內的food.h改成library/food.h了
而-I的這一個部分我們只要在Makefile加上去就好了~不會很複雜哩~
沒有留言:
張貼留言