當前位置:首頁 » 編程軟體 » c編譯多個文件

c編譯多個文件

發布時間: 2024-06-24 13:06:23

① C 語言中多文件編譯的問題

如果有多個源文件,基本上有兩種編譯方法:
[假設有兩個源文件為test.c和testfun.c]
1.
多個文件一起編譯
用法:#gcc
testfun.c
test.c
-o
test
作用:將testfun.c和test.c分別編譯後鏈接成test可執行文件。
2.
分別編譯各個源文件,之後對編譯後輸出的目標文件鏈接。
用法:
#gcc
-c
testfun.c
//將testfun.c編譯成testfun.o
#gcc
-c
test.c
//將test.c編譯成test.o
#gcc
-o
testfun.o
test.o
-o
test
//將testfun.o和test.o鏈接成test
以上兩種方法相比較,第一中方法編譯時需要所有文件重新編譯,而第二種方法可以只重新編譯修改的文件,未修改的文件不用重新編譯。

② keil 怎麼同時編譯多個C文件

要想把多個C程序同時編譯
1.主函數里要有對其他C程序里的所有函數的聲明。(也可以用.h文件來聲明並在主函數里include "*.h" *代表h文件文件名)
2.在keil工程里要添加所有.c文件

c語言編寫和編譯多文件的程序

第一個問題
請問,我是不是該這樣做:
在main.c中#include
在fun.c中同樣#include
(好像是必需的,請詳細解釋)
這是必需的。因為編譯器只是把包含文件的代碼復制過來,既然你二個文件中都用到頭文件的內容,那當然要包含頭文件,否則就會出錯。
我的觀點,如果這兩步都是必需的
那麼當有很多個比如10個.c程序每個里頭都要#include
那麼文件是不是會特別大,當有100個.c程序都要包含一下的話,那麼不是非常重復么?)
那當然是會重復的。不過這個對程序的運行效率沒任何影響,只是在編譯過程中對文件的分析時間會稍長些,這也是沒有辦法的事,全看代碼編寫者如何組織結構了。
第二個問題:
會的。解決的方法就是在可能被多次包含的頭文件中開頭加上#pragma
once,那樣就可以保證此頭文件代碼只被執行一次,而不會造成頭文件中函數多次重復定義至於引起這種情況的情況。當然你也可以自己用#ifdef等預編譯處理來解決。你問的問題不就是這種情況么?main.c和fun.c中都包含頭文件tou.h
第三個問題:
當我在main.c中這樣
#define
unchar
unsigned
char
那麼當我在fun.c中還需要重新創建替換宏unchar嗎
可以不在創建而直接使用嗎?
答案是需重新創建,不能直接使用。但你可以把一些在多個文件中使用的宏、全局變數等統一定義到一個頭文件中,那這樣就可以避免多次定義了。

④ vscode C語言如何編譯多個源文件

你可以寫一個類似的任務在task里:在args一行,寫你需要編譯的文件
{
"label": "build my project",
"type": "shell",
"command": "C:\\MinGW\\bin\\g++.exe",
"args": ["main.cpp", "test.cpp", "-o", "test.exe"],
"group": "build",
},
你還可以寫一個make任務,對於文件多的,手寫不現實,可以做一個makefile
這樣你只要在launch裡面
preLaunchTask,寫上這個build my project,就可以了。

⑤ C語言中,如何用多個文件編寫程序

1.
將一個函數寫在一個文件里,然後再在另一個文件里用「include」包含這個文件。
2.
舉例:
在文件c1.c里編一個函數:
void
printWord(){

printf("Hello!world!");
}
再建立一個文件c2.c,文件開頭寫上#include"c1.c",就可以調用c1.c里的函數printword()了
這樣通過include操作,可以把任意多個文件連接起來,編譯成一個程序運行。

⑥ c璇璦涓濡備綍鍚屾椂榪愯屽氫釜婧愭枃浠訛紵

鍦–璇璦涓錛屽彲浠ヤ嬌鐢ㄥ氫釜婧愭枃浠舵潵緙栧啓涓涓紼嬪簭銆傚彲浠ュ皢紼嬪簭鍒嗘垚澶氫釜妯″潡錛屾瘡涓妯″潡瀵瑰簲涓涓婧愭枃浠躲傚湪浣跨敤澶氫釜婧愭枃浠舵椂錛屽彲浠ラ噰鐢ㄤ互涓嬩袱縐嶆柟娉曟潵鍚屾椂緙栬瘧鍜岃繍琛屽氫釜婧愭枃浠訛細

灝嗗氫釜婧愭枃浠剁紪璇戞垚涓涓鍙鎵ц屾枃浠
鍦ㄨ繖縐嶆柟娉曚腑錛屽彲浠ヤ嬌鐢ㄤ竴涓鍛戒護灝嗗氫釜婧愭枃浠剁紪璇戞垚涓涓鍙鎵ц屾枃浠躲備緥濡傦紝鍋囪炬湁涓や釜婧愭枃浠秏ain.c鍜宖unc.c錛屽彲浠ヤ嬌鐢ㄤ互涓嬪懡浠ゅ皢瀹冧滑緙栬瘧鎴愪竴涓鍙鎵ц屾枃浠訛細

go

gcc main.c func.c -o program
鍏朵腑錛実cc鏄緙栬瘧鍣ㄧ殑鍛戒護錛宮ain.c鍜宖unc.c鏄婧愭枃浠訛紝-o program鎸囧畾鍙鎵ц屾枃浠剁殑鍚嶇О涓簆rogram銆

灝嗗氫釜婧愭枃浠剁紪璇戞垚澶氫釜鐩鏍囨枃浠訛紝鐒跺悗閾炬帴鎴愪竴涓鍙鎵ц屾枃浠
鍦ㄨ繖縐嶆柟娉曚腑錛屽彲浠ュ厛灝嗗氫釜婧愭枃浠跺垎鍒緙栬瘧鎴愮洰鏍囨枃浠訛紝鐒跺悗鍐嶅皢瀹冧滑閾炬帴鎴愪竴涓鍙鎵ц屾枃浠躲備緥濡傦紝鍋囪炬湁涓や釜婧愭枃浠秏ain.c鍜宖unc.c錛屽彲浠ヤ嬌鐢ㄤ互涓嬪懡浠ゅ皢瀹冧滑鍒嗗埆緙栬瘧鎴愮洰鏍囨枃浠訛細

r

gcc -c main.c
gcc -c func.c
鍏朵腑錛-c閫夐」琛ㄧず鍙緙栬瘧婧愭枃浠訛紝涓嶈繘琛岄摼鎺ャ傜紪璇戝悗浼氱敓鎴愪袱涓鐩鏍囨枃浠秏ain.o鍜宖unc.o銆

鐒跺悗錛屽彲浠ヤ嬌鐢ㄤ互涓嬪懡浠ゅ皢涓や釜鐩鏍囨枃浠墮摼鎺ユ垚涓涓鍙鎵ц屾枃浠訛細

go

gcc main.o func.o -o program
鍏朵腑錛宮ain.o鍜宖unc.o鏄鐩鏍囨枃浠訛紝-o program鎸囧畾鍙鎵ц屾枃浠剁殑鍚嶇О涓簆rogram銆

榪欎袱縐嶆柟娉曢兘鍙浠ュ悓鏃剁紪璇戝拰榪愯屽氫釜婧愭枃浠訛紝鍏蜂綋浣跨敤鍝縐嶆柟娉曞彲浠ユ牴鎹瀹為檯鎯呭喌閫夋嫨銆

⑦ 怎麼編譯多個c語言文件

1、如果,在一個c主程序中,以include形式包含了其他所有的引用文件,在編譯過程中,編譯器首先會將這些文件合並到一個臨時文件中,然後再對這個臨時文件進行編譯。
2、如果,是作為一個工程,編譯器會分別編譯各個獨立的文件(如果文件中有include按照上一步進行),然後再將編譯好的初步結果用鏈接程序連到一起。
簡單的說,每一個.c或者.cc都是一個編譯單元,每一個編譯單元編輯的結果是一個.o或者obj之類的中間文件,至於是否是多文件,不需要關心,但是要保證不同的編譯單元之間不要有重復的符號,這就是要避免重復包含。
每一個編譯單元生成的目標文件.o或者obj都會引用一些不在本目標文件中的符號,這些符號定義在別的.o或者.obj文件中, 鏈接器把他們聯系在一起,所有的符號也就都有定義了,編譯鏈接簡單說來就是這樣。

熱點內容
phpqq驗證 發布:2024-11-07 21:09:07 瀏覽:961
安卓忘記屏幕時間怎麼辦 發布:2024-11-07 20:46:08 瀏覽:180
酒店伺服器異常怎麼辦 發布:2024-11-07 20:46:03 瀏覽:805
電視買什麼牌的什麼配置好 發布:2024-11-07 20:41:55 瀏覽:652
光遇安卓用什麼拍視頻比較好 發布:2024-11-07 20:23:02 瀏覽:991
華為雲伺服器搭建網站 發布:2024-11-07 20:22:39 瀏覽:251
手機刷安卓卡需要注意什麼 發布:2024-11-07 20:21:09 瀏覽:23
塊存儲客戶端 發布:2024-11-07 20:12:14 瀏覽:972
scratch打地鼠編程 發布:2024-11-07 20:06:41 瀏覽:211
微信存儲空間里聊天記錄刪除 發布:2024-11-07 20:05:31 瀏覽:166