第一次用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.聯結器 通過連線其他...