這是關於C語言的問題 工程中有兩個檔案,如何在檔案中

時間 2022-07-22 05:55:09

1樓:南京新華電腦專修學院

我有幾個方案,我經常在vc下使用,都沒問題,你試試:

方案1:在一個檔案中定義全域性變數「型別 tmp;」,注意是全域性變數。另一個檔案全域性變數的位置使用「extend 型別 tmp;」。

方案2:把hal.c檔案裡的函式引數加一個指向tmp的指標,tmp在main中,在hal.c裡的檔案使用tmp時,把地址傳過去就行了。

例如:mian()

function(&tmp;...;...);

...}

在hal.c裡面

function(char *tmp;...;...)

這樣就行了

方案1、2都不用hal.h

方案3:你把hal.c的子函式寫進hal.h,在mian函式之前include一下就行了。

但不推薦此方法。

對你出現的問題的理解:

你在hal.h中宣告瞭tmp,在兩個檔案裡都包含它,表示包含了兩次,c語言規定如果沒有限定為區域性變數,則各個檔案都可以呼叫,這就導致你宣告瞭兩個名稱相同的同型別變數,當然不行。

如果定義為區域性變數,那麼另一個檔案就沒辦法用它了,或者這麼說:兩個檔案各有一個tmp但不是同一個tmp,改變一個的值,另一個不變。

常用方法就是extend一下(方案1)。

順便說一句,我從來沒用過unsigned char型別,因為char型別本身就是非負的,可能是因為編譯器的關係吧

c語言全域性變數問題。 現有2個檔案,被放在同一個工程中。如果在兩個檔案的函式外部定義同名的變數,

2樓:海納百川文淵閣

若兩邊都初始化了,那是定義,就是重定義了,逐檔案編譯時無錯,但連結時會報錯。

若只有一邊或兩邊都未初始化,vs.net及devc++中實測這是可行的,編譯器會把其中一處處理成定義,其他處認作宣告。

其實還可在不同檔案中定義同名但型別不同的變數,不信可試試。

c語言 如何在一個檔案中呼叫另一個檔案的函式 用標頭檔案

3樓:匿名使用者

test.h

#include

int func(int x);

func.c

int func(int x)

main.c

#include "test.h"

void main()

把以上三個檔案

du放到一個工程中,zhi編譯,就可以看到dao結果了。

c語言從一個檔案呼叫另一個檔案的函式 用標頭檔案

4樓:

//test.c

#include

#include "main.h"

void main()

//test2.c

int funsum(int a,int b)//main.h

int funsum(int,int);

結果是列印sum=3

如何在一個c檔案中呼叫另外一個c檔案中的變數

5樓:刀無極啊

變數要定義為全域性變數,就是要在函式體外面定義變數,同時不能加關鍵字static靜態的,靜態全域性變數只能在本檔案內使用,你先在一個檔案中定義變數,比如:

#include

int a;

int main()

在另外的檔案中,如果你想要使用變數a,那麼首先要extren int a;extren關鍵字的意思是到其他檔案中尋找,這樣你就可以在其他檔案中使用變數a了,注意全域性變數會自動初始化為0,如果你不初始化,同時全域性變數的值會儲存到靜態儲存區直到整個程式執行結束的

c語言,兩個源程式,其中一個源程式檔案呼叫另一個檔案中的函式。

6樓:匿名使用者

下面檔案假設叫b.c,編寫一個b.h,內容為:void enorder();

假設上面檔案為a.c,前面加一句:#include "b.h"或不用b.h前面加句void enorder();也成

b.c中第1句改為:extern int a[10];

void enorder();在標頭檔案b.h中寫成extern void enorder();也成

c語言中,可不可以在一個函式中開啟兩個檔案呢?

7樓:匿名使用者

file *pfa = fopen("a.txt");

file *pfb = fopen("b.txt");

通過pfa和pfb操作這兩個檔案

fclose(pfa);

fclose(pfb);

和操作一個檔案是一樣的,用不同的指標就可以

c語言中如何用一個程式呼叫另一個程式,兩個程式都是.c檔案。

8樓:匿名使用者

1、要想跨檔案使用同一個變數,該變數必須定義成全域性變數2、在另外的檔案引用檔案外的全域性變數,引用者必須用extern來宣告變數。

3、必須在函式中去操作該變數

例如:1.cpp:

void func() ;

int n ;

int main()

2.cpp

#include

extern int n;

void func()

{std::cout << "n="<

9樓:

你把被呼叫的.c檔案中的main()函式改成其他名字 如fun();

然後在另一個.c檔案的main()函式中呼叫fun();

只要保證一個c工程只有一個main()做入口點就行了,至於保留哪個main函式,那就要看你程式的邏輯了,注意main函式是入口點的概念

10樓:匿名使用者

src1.c

int fun1()

src2.c

extern int fun1();

int fun2()

C語言中關於“有效數字”的問題,在c語言中,有效數字和有效數位怎麼解釋?

當你輸入2.2e2時a 4.84,而輸入2.2e 2時a 0.20661157024793388429752066115702.它們的是float型,放在記憶體中是 2.2e2 01000011 0,1011100 00000000 00000000,2.2e 2 00111100 1,010010...

關於c語言的問題,關於C語言的問題

鷹弈 1 有定義 int n 0,p n,q p 則以下選項中,正確的賦值語句是 d a.p 1 b.q 2 c.q p d.p 5 解 p為一級指標,其中p為指標的地址,q為二級指標,其中 q為指標的地址,只能給變數或指標變數賦值,不能給地址賦值,所謂地址,就是由acs碼構成,簡單的說,就是每個人...

關於c語言的問題,一個關於c語言的問題

彬彬有禮 對於你的疑問,我一個一個幫你解決 1.因為5 9 代表整除取商,即結果為0 而 5.0 9 代表5除以9,即結果為0.555556 所以兩者結果完全不一樣。再比如 3 2 1,而3.0 2 1.5 2.double b 2這是對的,沒有必要寫成double b 2.0,因為系統會自動幫你轉...