Ⅰ 兩個C文件如何共享一個變數
可以把常量定義在一個頭文件中,需要用到的.cpp文件調用這個.h文件就行。你試試,記得上學時這么做過。
c語言中一個項目只能有一個main函數,你這屬於兩個項目,就算都運行起來了,也是不同的進程,進程是資源分配的基本單位,也就是說,兩個進程擁有不同的資源,不可能共享一個變數的。
Ⅱ C語言中定義一個結構體如何在不同的.C文件中使用。
比如三個.c文件一個.h文件
c 2.c 3.c 4.h
這三個頭文件都引用4.h include<4.h>
4.h中定義一個結構體類型struct test{};
1.c中定義一個該結構體類型的全局變數struct test mode;
4.h中extern struct test mode;
其他.c文件就可以直接使用這個結構體變數了,並且是共用的
Ⅲ 關於C語言中變數在兩個.C文件中的調用問題
我有幾個方案,我經常在VC下使用,都沒問題,你試試:
方案1:在一個文件中定義全局變數「類型 tmp;」,注意是全局變數。另一個文件全局變數的位置使用「extend 類型 tmp;」。
方案2:把hal.c文件里的函數參數加一個指向tmp的指針,tmp在main中,在hal.c里的文件使用tmp時,把地址傳過去就行了。
例如:
mian()
{
char tmp;
.....
.....
}
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語言中,一個文件中定義的 全局變數,在另一個文件中能用嗎
全局變數extern可以在其他源程序中使用;全局變數static只能在本程序中使用。
全局變數是使用相同的內存塊在整個類中存儲一個值。
全局變數既可以是某對象函數創建,也可以是在本程序任何地方創建。全局變數是可以被本程序所有對象或函數引用。
(4)C語言一個變數多個文件使用擴展閱讀:
使用注意
全局變數的存在主要有以下一些原因:
1、使用全局變數會佔用更多的內存(因為其生命期長),不過在計算機配置很高的今天,這個不應該算什麼問題,除非使用的是巨大對象的全局變數,能避免就一定要避免。
2、使用全局變數程序運行時速度更快一些(因為內存不需要再分配),同樣也快不了多少。
3、對於局部變數的名字空間污染,這個在不使用太多變數時是可以避免的。
4、當全局變數與局部變數重名的時候,起作用的是局部變數,全局變數被屏蔽掉。
5、還可以用extern在函數外對全局變數聲明,使全局變數的作用域從聲明處到文件的結束。
6、全局變數的優先度低於局部變數。
Ⅳ 怎樣使C語言全局變數在多個文件中使用
extern 關鍵字
extern int i;這樣就可以在其他文件中使用
在頭文件中聲明
a.h
extern int i;
在其他某個c文件中定義
int i =0;
其他要使用i變數的c源文件只需要include"a.h"就可以
Ⅵ 我剛學C語言 怎麼樣讓一個變數到其他的文件也能用
用外部變數
例如:
在同一工程中的兩個文件,a.c
b.c
在a.c中有如下定義:
int
i=889
;
則在b.c中可以這樣做:
extern
int
i;
之後便可訪問a.c中的i值。
Ⅶ c語言一個結構體如何在多個源文件裡面調用
引用結構體有引用類型,和引用全局變數兩種方式。
1、引用類型。
需要將結構體定義與頭文件中(.h文件),然後在需要引用類型的源文件(.c)中,均引用該頭文件,即可使用該類型。
2、引用全局變數。
要引用全局變數,需要先引用類型,之後在一個源文件中定義全局變數,在其它源文件中聲明該全局變數,即可使用。
比如結構體為struct test, 定義全局變數為
struct test glabol_test;
在其它文件中,只需要
extern struct test globol_test;
即可在對應文件聲明所在行之下進行調用。