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

c多文件編程

發布時間: 2022-02-26 22:41:59

1. c ++多文件編程用一個頭文件作為各文件介面的程序編寫實例

//文件A.h
class CInterface;
class CA
{
public:
CA(CInterface* pinterface)
{
m_pInterface = pinterface;
}
void fun_a()
{
printf("fun_a\r\n");
}
CInterface* m_pInterface;
};
//文件B.h
class CInterface;
class CB
{
public:
CB(CInterface* pinterface)
{
m_pInterface = pinterface;
}
CInterface* m_pInterface;
};
//文件C.h
class CInterface;
class CC
{
public:
CC(CInterface* pinterface)
{
m_pInterface = pinterface;
}
CInterface* m_pInterface;
};
//介面文件類

class CA;
class CB;
class CC;
class CInterface
{
public:
void create_obj()
{
m_pa = new CA(this);
m_pb = new CB(this);
m_pc = new CC(this);
}
CA* get_a()
{
return m_pa;
}
CB* get_b()
{
return m_pb;
}
CC* get_c()
{
return m_pc;
}
private:
CA* m_pa;
CB* m_pb;
CC* m_pc;
};
int main()
{
CInterface test;
test.create_obj();
//文件c調用文件a的過程
//通過這種方法,可以訪問所有文件,且實現分離

test.get_c()->m_pInterface->get_a()->fun_a();
return 0;
}

2. 怎麼編譯多個c語言文件

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

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

將一個函數寫在一個文件里,然後再在另一個文件里用「include」包含這個文件。舉個例子 在文件c1.c里編一個函數:
void printWord(){
printf("Hello!world!");
}
再建立一個文件c2.c,文件開頭寫上#include"c1.c",就可以調用c1.c里的函數printword()了

4. C語言、C++:關於多文件編程

你如果是用編譯器自動生成的文件,編譯器自動加到項目里,自己寫的,你要手動在項目中添加文件,編譯器才會檢索,編譯器只檢索屬於項目的文件
1,.c或者.cpp不需要包含,如果你是用VS系列,.h和.cpp是一對的,你包含了X.h就是能使用X.cpp的資源、你自己想包含的話那也無所謂,一般是編譯器做的
2 .h可以添加實現,一切都可以添加。但是為了代碼的隱藏和符合編程的機制,一般都放到對應的.cpp。簡短的函數可以直接放在.h,你自己找起來也方便
3.包含了.h就能直接使用對應的.C。項目中這種事情一般讓編譯器去實現。其實編譯的時候,編譯器會自動檢索所有文件,只要你有聲明,實現不管你寫在哪,編譯器都會找到的,寫在對應的.h和.cpp是為了方便和規范的需要

5. c多個文件如何編譯

關於整個 C 語言中的主函數 main( ) 如何調用相關的頭文件(*.h)、以及調用其它獨立的模塊(*.c)的方法,關鍵在於對於如何編寫 makefile 文件的真正理解、以及真正掌握編寫規則。
由於我已經有很多年沒有編寫過 C 語言源程序、以及編寫 makefile 文件了,但是可以大概給你提供一個思路就是:

下面的文本文件假設以 my_makefile 為例,編譯環境為 Linux 系統,C 語言編譯器為 gcc。
但是在這里注意一點:我的 my_makefile 文件中的注釋語句是否是分號進行注釋,我已經不太記得了,這個需要自己再參考一下。

另外就是:對源文件(*.c)、以及生成可執行文件(my_runfile)在 my_makefile 文件中的前後次序,我也記不清了,僅供參考。
myprog1.o: myprog1.c ; myprog1.o 的生成依賴於 myprog1.c 這個源程序
gcc -c myprog1.c ; 使用 Linux 系統的 C 語言編譯器對 myprog1.c 只編譯、不鏈接
myprog2.o: myprog2.c ; myprog2.o 的生成依賴於 myprog2.c 這個源程序
gcc -c myprog2.c ;使用 Linux 系統的 C 語言編譯器對 myprog2.c 只編譯、不鏈接
my_runfile: myprog1.o myprog2.o ; 可執行文件 my_runfile 的生成依賴於 myprog1.o、myprog2.o 這兩個目標文件
gcc -o my_runfile myprog1.o myprog2.o ; 使用 cc 的 -o 選項生成用戶自定義的可執行文件:my_runfile,如果不指定 -o 選項,cc 編譯器生成的預設可執行文件名為:a.out
運行命令為:
$make -f my_makefile (使用 -f 選項代替預設的 make 文件名 makefile)

6. C語言多文件編譯

軟體把 新建的c文件加入工程後默認被當做cpp文件進行編譯了,

設置 【工程】菜單 ---> 【工程屬性】--->【文件】

選中a.c 把當前文件作為C++編譯勾掉 【確定】

建議 【運行】 --->【清除】 先清除後之前編譯生成的文件

再接著【運行】--->【全部重新編譯】 再 運行 設置參考圖片如下所示

擴展知識 c++ c混合編譯 extern "C"

比如吧a.c改成, 不改設置也能過編譯

extern "C"

{

#include "a.h"

Status Test(int a, int b)

{

if(a==b)

return TRUE;

else

return FALSE;

}

}

7. C語言多文件編程問題

main.c修改後如下:

#include<stdio.h>
#include<memory>
#include<stdlib.h>
#include"student.h"
intmain()
{
printf("Helloworld! ");
student*head;
head=(student*)malloc(sizeof(student));
shuru(head);
shuchu(head);
return0;
}

student.c修改後如下:

#include<stdio.h>
#include"student.h"
voidshuru(student*head)
{
printf("id:");
scanf("%d",&head->id);
printf("mark:");
scanf("%d",&head->mark);
}
voidshuchu(student*head)
{
printf("id:");
printf("%d ",head->id);
printf("mark:");
printf("%d",head->mark);
}

student.h不用修改

8. C語言多文件編程

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

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

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

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

9. 求一個c語言多源文件編程實例

------------------------ test.h
#ifndef __TEST_H__
#define __TEST_H__

#define T_DEFINE_TOTAL 100

void printmsg(char *msg);
#end if

---------------------------- test.c
#include "test.h"
void printmsg (char *msg) {
printf("%s\n", msg);
}

------------------------------ m.c
#include "test.h"

int main(int argc, char* argv[]) {
printf("The Pre define Number is %d\n", T_DEFINE_TOTAL);
printmsg("This message come from main function!");
return 0;
}

編譯命令
gcc -c test.c
gcc -c m.c

gcc -o m.exe test.o m.o

10. c語言編程為什麼要多文件呢

源代碼確實是多文件的。不過編譯好的目標代碼在運行期調入內存後就無所謂文件的概念了,然而不同代碼段之間的界限仍然存在。
模塊化主要有以下幾個優點:
1.便於復用代碼。通用性強的重復的功能只要寫一遍就可以了,下次要用在其它程序上時只要更改很小的部分或者可以不用更改。
2.便於多人協作。在設計軟體之初就可以很清楚地分配各個開發部門的任務。模塊的編寫者本身只要關注他所寫的東西,清楚這一部分的功能,留出介面就可以了。另外,對於整個工程的負責人而言,這樣會方便瀏覽全局的工作進度,統籌人員安排。
3.便於修改和維護。如果能確定只是某個模塊有問題,在模塊內解決即可,不需要牽一發而動全身。要升級某一部分的功能,可以只針對具體的模塊重新開發,節約成本。
其實不只是C語言,許多其它語言也經常使用這種方法。開發大型軟體時這種方法非常有效(否則不明顯,或者反而有副作用)。對於軟體設計來說這不僅僅是一種風格,而是一種方法學了。
聲明include包含的函數是聲明外部函數,只是extern關鍵字可以省略。
聲明後直接調用就可以了。
----
[原創回答團]

熱點內容
安卓手機怎麼加速進程 發布:2025-01-18 07:29:48 瀏覽:681
塞恩拐彎腳本 發布:2025-01-18 07:29:37 瀏覽:742
師資配置含哪些內容 發布:2025-01-18 07:17:35 瀏覽:706
江西腳本 發布:2025-01-18 07:14:38 瀏覽:392
php中i方法 發布:2025-01-18 07:13:19 瀏覽:369
FTP寶塔Linux面板 發布:2025-01-18 07:10:05 瀏覽:396
無線網卡怎麼改密碼 發布:2025-01-18 06:54:41 瀏覽:766
ava動態編譯 發布:2025-01-18 06:54:39 瀏覽:765
中國學位論文全文資料庫 發布:2025-01-18 06:43:49 瀏覽:689
全局變數存儲類別 發布:2025-01-18 06:39:29 瀏覽:424