c語言全局變數多文件
① 怎樣使c語言全局變數在多個文件中使用
extern 關鍵字x0dx0aextern int i;這樣就可以在其他文件中使用x0dx0a在頭文件中聲明x0dx0aa.hx0dx0aextern int i;x0dx0a在其他某個c文件中定義x0dx0aint i =0;x0dx0a其他要使用i變數的c源文件只需要include"a.h"就可以
② 在C語言中,一個文件中定義的 全局變數,在另一個文件中能用嗎
全局變數extern可以在其他源程序中使用;全局變數static只能在本程序中使用。
全局變數是使用相同的內存塊在整個類中存儲一個值。
全局變數既可以是某對象函數創建,也可以是在本程序任何地方創建。全局變數是可以被本程序所有對象或函數引用。
(2)c語言全局變數多文件擴展閱讀:
使用注意
全局變數的存在主要有以下一些原因:
1、使用全局變數會佔用更多的內存(因為其生命期長),不過在計算機配置很高的今天,這個不應該算什麼問題,除非使用的是巨大對象的全局變數,能避免就一定要避免。
2、使用全局變數程序運行時速度更快一些(因為內存不需要再分配),同樣也快不了多少。
3、對於局部變數的名字空間污染,這個在不使用太多變數時是可以避免的。
4、當全局變數與局部變數重名的時候,起作用的是局部變數,全局變數被屏蔽掉。
5、還可以用extern在函數外對全局變數聲明,使全局變數的作用域從聲明處到文件的結束。
6、全局變數的優先度低於局部變數。
③ c語言 中 為什麼不將全局變數的定義放在頭文件中
首先要說明什麼是全局變數,c語言中全局變數一般是指定義在函數體外的變數。全局變數按可訪問性可分為外部變數和內部變數。
內部變數是指使用了static關鍵字修飾的全局變數,它的可訪問范圍(作用域)被限定在本源文件所在的鏈接文件模塊中,不能被其它文件模塊引用。反之沒有被static關鍵字修飾的全局變數則是外部變數,其它文件模塊可以通過extern關鍵字引用該全局變數並訪問。
要說明的是全局變數無論是內部變數還是外部變數,的存儲類別都是靜態的,也就是放到靜態內存區域中,它編譯鏈接階段就已經分配好了固定的內存。
搞清楚上面的內容,就很容易得出若把全局變數放在頭文件會有哪些問題;
一 對內部變數來說,每個include該頭文件的文件模塊中都會單獨為這個內部變數分配靜態內存空間,這個空間是相對獨立的,是一種空間浪費,同時還失去了全局變數訪問一致性的特點,實在沒有什麼意義。如果這個頭文件只被一個模塊使用,對於這個文件模塊來說應該沒啥問題。
二 對外部變數來講,這個頭文件被多個文件模塊include的情況下,鏈接過程會報錯,因為符號沖突,所有include這個頭文件的模塊都會有這個全局符號。在這個頭文件僅僅只被一個模塊include的時候可以正常使用。
經上分析得出要避免全局變數定義在頭文件中,因為當這個頭文件被多方include的時候會產生一些不必要的麻煩,就這么多。
全局變數作用域范圍較廣,被錯誤修改後排查定位問題比較困難,若非必要盡少使用。
下面說一下比較好的方式就是全局變數只定義在實現文件(.c,.m)中,對內部變數沒啥說的它只在文件模塊內部使用,對外部變數可以在該模塊頭文件中使用extern關鍵字修飾一下,這樣其它文件模塊只要直接include該頭文件就可以使用模塊中的外部變數了。
④ C語言所謂的全局變數在多個.c文件中到底該怎樣使用
例如,
c 中 int main(){} int A; void f(void)
main想用A ,必須聲明 extern A;f可以直接用;
假如2.c也想用, 也得聲明 extern A;
假如你不想讓2.c用, 就 static int A;定義成靜態全局變數
⑤ C語言多文件編程
多個c文件的作用在於將不同功能的代碼分開來實現,這樣便於代碼重用、代碼編譯和代碼管理。
一個程序中,只能有一個main函數,這是整個程序的起點和入口。如果其他人也實現了該函數,則必須要重新命名,然後在唯一的main函數中統一調用。
多個c文件的合並並沒有順序要求,任何一個都可以先編譯或者後編譯。
extern表示導出,可以用於函數和變數。用於函數的時候,表示這是一個外部函數,用於變數的時候,表示這是一個外部變數。
如果使用一個c文件,多個h文件,則會導致改動代碼任何一個地方,都要重新編譯所有的文件,效率上非常不劃算。而使用多個c文件,當代碼發生變更的時候,僅僅相關的c文件代碼需要重新編譯,其他代碼則可以保持不變,不用參與編譯。
函數中的局部變數無法在函數外部調用,只能通過參數傳遞的方式傳遞給第三方函數。因為局部變數是出於棧上面的,棧會隨著函數調用完畢的時候被系統回收。
⑥ C語言中怎樣在頭文件中定義一個能夠在所有文件中都可以使用的全局數組變數
C語言可以通過在.c文件中定義,頭文件中extern的方式實現一個能夠在所有文件中都可以使用的全局數組變數。
具體做法如下:
設有一個多項目文件有 1.c、2.c和3.c三個源程序文件;
如果有一個全局數組需要所有文件使用,那麼可以添加一個data.c文件,在其中添加全局數組的定義;
向項目中添加data.h文件,在data.h文件中用 extern聲明該數組;
只需要在相應的.c文件中添加#include "data.h",那麼久可以使用data.c中的全局數組了。
⑦ 我在用C語言編寫程序,想把全局參數變數設置成一個文件,多個文件共用這些全局變數,如何做到謝謝!
樓上說的對。你用其它軟體也是一樣的設置。.h與.c,你只要include進去,就可以正常使用。
例如在IAR中
定義一個.h文件
#ifndef __IODEF_H
#define __IODEF_H
//中間填寫你要定義的全局變數
endif
然後即可在.c文件中把這個文件include進來。