導航:首頁 > 源碼編譯 > 多文件編譯百度百科

多文件編譯百度百科

發布時間:2023-02-27 07:40:19

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

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

㈡ gcc如何編譯多文件

你這里有幾處問題。

fun.h 加頭文件衛士,頭文件中聲明全局變數要用static修飾。

#ifndefFUN_H
#defineFUN_H
staticintg=10;
voidfun();
#endif

其他文件中引用這個文件的變數,extern int g;

mian.c

#include<stdio.h>
#include"fun.h"
externintg;
voidmain()
{
printf("%d ",g++);
fun();
}

㈢ C語言多文件編程

多個c文件的作用在於將不同功能的代碼分開來實現,這樣便於代碼重用、代碼編譯和代碼管理。
一個程序中,只能有一個main函數,這是整個程序的起點和入口。如果其他人也實現了該函數,則必須要重新命名,然後在唯一的main函數中統一調用。

多個c文件的合並並沒有順序要求,任何一個都可以先編譯或者後編譯。
extern表示導出,可以用於函數和變數。用於函數的時候,表示這是一個外部函數,用於變數的時候,表示這是一個外部變數。

如果使用一個c文件,多個h文件,則會導致改動代碼任何一個地方,都要重新編譯所有的文件,效率上非常不劃算。而使用多個c文件,當代碼發生變更的時候,僅僅相關的c文件代碼需要重新編譯,其他代碼則可以保持不變,不用參與編譯。

函數中的局部變數無法在函數外部調用,只能通過參數傳遞的方式傳遞給第三方函數。因為局部變數是出於棧上面的,棧會隨著函數調用完畢的時候被系統回收。

㈣ 如何實現linux下的C++多文件編譯

要分開編譯,然後鏈接,比如
$ g++ print.cpp -c
$ g++ test.cpp -c
$ g++ test.o print.o -o mytest
這里的-c表示只編譯。因為你有兩個文件,所以編譯兩次。編譯後會生成.o的文件。
然後把這些在鏈接起來就可以了。-o表示輸出的文件。

㈤ 多文件使用linux進行編譯

可以使用makefile進行make編譯,建議先看一下簡單的make fike編寫規則。
一般情況下在MakeFile或*.mk下進行make就可以~~

㈥ 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嗎
可以不在創建而直接使用嗎?
答案是需重新創建,不能直接使用。但你可以把一些在多個文件中使用的宏、全局變數等統一定義到一個頭文件中,那這樣就可以避免多次定義了。

閱讀全文

與多文件編譯百度百科相關的資料

熱點內容
舊版本怎麼下載到新的安卓 瀏覽:964
flash個人網站源碼下載 瀏覽:723
javasocketbyte 瀏覽:262
素描基礎教程pdf 瀏覽:541
香港商報pdf版 瀏覽:426
安卓手機怎麼錄制吉他彈奏 瀏覽:382
ie文件夾緩存在哪裡 瀏覽:264
圍棋排名演算法 瀏覽:963
zigbee加密演算法 瀏覽:464
柏楊版資治通鑒pdf 瀏覽:395
事業編程序員下班時間 瀏覽:10
linux中命令大全 瀏覽:38
pic單片機學習網站 瀏覽:163
843除6的演算法 瀏覽:377
arduino編程視頻 瀏覽:744
pdf背景綠色 瀏覽:612
記事本dos命令 瀏覽:274
伺服器如何搭建多個節點 瀏覽:326
acx演算法 瀏覽:258
幽冥詭匠漫畫全集用什麼app可以看 瀏覽:1003