菜鳥攻略——C語言多檔案編程初探(一)

來源:互聯網
上載者:User

       發現有很多童鞋學了一年半載的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的實現單獨放在一個檔案中呢?答案是肯定的。

初級方案:3個函數的聲明和實現放到一個檔案中,再在main函數中調用。

在DEV-C++中編輯一個.h檔案(這裡命名為myfile.h)並儲存。(編輯完一定要儲存哦!)

//myfile.hvoid 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++下建一個工程:(一定要建工程)


建好工程後,我們可以看到,系統已經為我們在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檔案中的代碼


最後點擊編譯運行,結果如下:

簡單吧!一個簡單的多檔案工程就產生了。


代碼量很少的時候不需要這麼做,這裡僅僅是為了示範!


其實多檔案編程還涉及到範圍、命名空間、程式的編譯過程。這裡只是一個初級版本。下回還有講解!


水平有限,歡迎交流!










聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.