編譯多個文件
- 2020 年 10 月 18 日
- 筆記
假設我們寫了一個foo.h的頭文件,如下:
#ifndef foo_h
#define foo_h
namespace m1 {
void foo();
}
#endif
例外,我們肯定還會寫它的相關庫文件來實現函數的功能,我們就寫一個foo.c吧,如下:
#include <iostream>
#include “foo.h”//這裡一定要打雙引號,因為它不是標準頭文件。
void m1::foo()
{
std::cout<<“hello,world\n”;
}
最後,我們在寫一個main.c文件來調用它:
#include <iostream>
#include “foo.h”
void foo ()//這裡我們在主函數也寫了一個同名字的foo函數,我們編譯的時候會不會因為名字相同報錯呢,我們在主函數調用試試。
{
std::cout<<“HELLO, WORLD!\n”;
}
int main ()
{
m1::foo();//當然不會啦,我們在foo.h頭文件編寫的foo函數是放在名字空間m1中,所以就和我們自己的foo區分開來了,不過我們在調用時一定要加上它的名字空間。
foo();
return 0;
}
最後我們編譯,首先應該:
gcc -c foo.c
gcc -c main.c
這樣生成對應的目標文件,最後一步就是:
gcc main.o foo.o -o test
生成可執行文件test,然後運行結果如下:
hello, world
HELLO, WORLD!
由於瀏覽器的問題,我的截圖傳不上來,就是手打了運行結果。