菜鳥攻略——C語言多檔案程式設計初探(一)
發現有很多童鞋學了一年半載的C語言還不會多檔案程式設計。很多人到現在一個程式都只有一個原始檔(main.cpp或mian.c)。甚至連我的室友大飛哥(我們都大二下學期了)昨天也問我怎麼做。其實C語言的多檔案並不神祕。哥今天姑且裝B一回,說說怎麼多檔案程式設計,順便自己也小結一下。
說明:我用的程式設計工具為devc++,vc6.0也類似。不過vc.6.0會強迫你建工程,不太方便。
跟著我一步一步來,很簡單的哦!
現在先寫一個簡單的程式。保證學過C語言的你都能看懂。
在DEV-C++下編輯下面的程式:
#include<stdio.h> #include<stdlib.h> void func1(); //函式宣告 void func2(); //函式宣告 void func3(); //函式宣告 int main() { printf("hello world!\n"); func1(); func2(); func3(); system("pause"); return 0; }
//函式實現
void func1()
{
printf("我是函式1\n");
}
void func2()
{
printf("我是函式2\n");
}
void func3()
{
printf("我是函式3\n");
}
這個程式夠簡單吧!執行結果如下:
這個程式所有的函式實現都在同一檔案中,程式碼量很少,所以你能夠看懂。假如程式碼量很多時,你會發現這樣的程式除錯很費力。
為了體現C語言模組化的程式設計思想,我們可不可以將上面3個函式func1,func2和func3的實現單獨放在一個檔案中呢?答案是肯定的。
初級方案
在DEV-C++中編輯一個.h檔案(這裡命名為myfile.h)並儲存。(編輯完一定要儲存哦!)
//myfile.h
void func1()
{
printf("我是函式1\n");
}
void func2()
{
printf("我是函式2\n");
}
void func3()
{
printf("我是函式3\n");
}
再編輯我們的main.c檔案。(注意main.c檔案要和我們的myfile.h檔案放在同一目錄下)
點選編譯執行,結果如下://main.c #include<stdio.h> #include<stdlib.h> #include"myfile.h" //注意,這裡包含了我們自己寫的標頭檔案 int main() { printf("hello world!\n"); func1(); func2(); func3(); system("pause"); return 0; }
和上面的結果一樣吧!
實際上#icnlude機制很簡單,就是把#include所包含的檔案中的內容直接複製到#include所在的位置並替換#include語句,所以上面的程式和下面的程式是等價的。
//main.c
#include<stdio.h>
#include<stdlib.h>
//函式實現
void func1()
{
printf("我是函式1\n");
}
void func2()
{
printf("我是函式2\n");
}
void func3()
{
printf("我是函式3\n");
}
int main()
{
printf("hello world!\n");
func1();
func2();
func3();
system("pause");
return 0;
}
怎麼樣,簡單吧!
不過模組化得程式設計提倡在.h檔案中只包含一些宣告,而我們卻在myfile.h中放進了3個函式的實現。一般提倡把函式的實現放到另一個.c或.cpp檔案中。
所以我們可以修改如下(把原來的兩個檔案變成3個檔案):
修改版:
mian.c檔案:放main函式
myfile.h:3個函式的宣告
myfile.c:3個函式的實現
在dev-c++下建一個工程:(一定要建工程)
建立工程時選擇工程型別時,選擇第二個“Console Application”
建好工程後,我們可以看到,系統已經為我們在mian.c檔案中編輯好了部分程式碼,同時工程1目錄下也只有一個mian.c檔案
這時我們再新建myfile.h檔案
在彈出來的對話方塊中選擇Yes
接下來重新命名
在彈出的對話方塊中,輸入myfile.h
接下來在myfile.h中輸入3個函式的宣告:
//這裡只有3個函式的宣告
void func1();
void func2();
void func3();
接下來按照上面的方法新建myfile.c檔案
注意重新命名時輸入myfile.c,並在myfile.c中輸入3個函式的實現
最後修改mian.c檔案中的程式碼
最後點選編譯執行,結果如下:
簡單吧!一個簡單的多檔案工程就產生了。
程式碼量很少的時候不需要這麼做,這裡僅僅是為了演示!
其實多檔案程式設計還涉及到作用域、名稱空間、程式的編譯過程。這裡只是一個初級版本。下回還有講解!
水平有限,歡迎交流!
-------------------------2016.11.24 新增----------------------
歡迎閱讀!!!