關於C語言多個原始檔編譯成乙個程式

2021-05-24 11:11:15 字數 1054 閱讀 9913

第一次用csdn的部落格,慕名而來,決定好好經營下自己的技術部落格。

今天看《c和指標》中第二章程式設計訓練的第一題,就是關於c語言多個原始檔編譯成乙個程式的問題。之前自己一直都不太搞得懂這個,不過之前寫的程式都是簡單的,乙個原始檔就能搞定的那種,所以也一直懶了沒有去學怎麼,心裡隱隱的對學習心的東西感覺到恐懼。今天自己搬弄了乙個下午,各種錯誤,要崩潰了。吃完飯,又繼續投入到這其中當去。這次學聰明了,google了下,然後學著對比著來修改自己的**。

這裡就舉自己寫的乙個很簡單的範例來解說。

題目是,一共有三個原始檔,第乙個是increment,實現將整數加一;第二個是negate,實現將整數變反;最後的是main函式,實現呼叫這兩個函式,要求這三個函式在不同的原始檔。

實現起來是這樣的——

首先編寫乙個 increment.h的標頭檔案,申明函式

extern int increment(int a);

再寫increment.c原始檔

#include「increment.h」

int increment(int a)

再將該原始檔編譯

同理編寫negate.h&negate.c

最後來寫main.c

#include"increment.h"

#include"negate.h"

#include"stdio.h"

int main()

編譯&執行,但是比較崩潰的是一直出現乙個錯誤——

libcd.lib(wincrt0.obj)   :   error   lnk2001:   unresolved   external   symbol   _winmain@16

事實上我不懂什麼意思,不過google比較方便,就google一下這個錯誤,出來一些處理方法,選了乙個很簡單的用了

project-> setings-> link-> project   option編輯筐中把/subsystem:windows 改為/subsystem:console

改了之後果然能夠執行了。

高興中~~~

不過原理還是不懂。

以下引用——

將多個原始檔編譯成乙個ko

有三個檔案,分別是proc rw.c test.c和test.h,現在把這三個檔案編譯成proc.ko 1 proc rw.c include include include include copy to from user include test.h 在str中儲存使用者態write到檔案的字...

編譯器怎麼把多個原始檔編譯成乙個程式

預處理 修改 用 include指令新增相關的標頭檔案,編譯器可能還需要根據實際情況跳過程式中的某些 或補充一些 可以用 define和 ifdef來實現。編譯 轉換成彙編 計算機只能理解更低層的機器 指令。而生成機器 的第一步就是把c語言源 轉化為組合語言 彙編 生成目標 編譯器把這些彙編 都是些...

分步編譯乙個C語言檔案

一 以下是c程式一般的編譯過程 從圖中看到 將編寫的乙個c程式 源 轉換成可以在硬體上執行的程式 可執行 需要進行編譯階段 和鏈結這兩個階段。其中,1.編譯階段先通過 編譯器 把乙個 c cpp 源 編譯成 s的彙編 再經過 彙編器 把這 個.s的彙編 彙編成 o 的 目標 2.聯結器 通過連線其他...