1樓:北冰啊
你要明白一點是標頭檔案是在預處理階段被包含到.cpp檔案中的,所以,你宣告的那個變數在1.cpp和2.
cpp編譯之前就已經加到**段裡了。至於你用1.cpp修改那個變數,是在編譯後執行的時候發生的。
所以,那個變數在2.cpp中仍然是預設值
2樓:暗黑系巨龍吟風
你可以試下在標頭檔案裡面定義,然後cpp檔案裡面包含標頭檔案使用
3樓:夢想窗外
這就簡單了,在其中一個.cpp檔案中定義全域性變數,之後在標頭檔案中將該全域性變數宣告為extern,如:
1.cpp
int g_var;
x.hextern int g_var;
接下來,需要用到該全域性變數的.cpp包含x.h標頭檔案就ok了。
4樓:
很簡單:
在1.cpp裡定義此變數:如 int g_var = 0;
在其它用到的.cpp裡宣告為extern就ok了. 如:extern int g_var;
5樓:
應該是你的程式寫的不對~按我寫的操作看下
第一步,寫一個a.h的標頭檔案
**如下:
void fun(int *n);
第二部,寫一個a.cpp的原始檔
**如下:
void fun(int *n)
第三部,寫一個測試原始檔 test.cpp**如下
#include "stdio.h"
#include "a.h"
int n=0;
int main()
編譯執行結果為:
原始n的值是0
處理後的n值是1
6樓:匿名使用者
首先只能在一個cpp檔案中宣告全域性變數,另外最好加個包含宣告變數的標頭檔案,這樣就基本上解決問題了。
比如://---------------------------------------
// 全域性變數valuedef.h中宣告如下:
#ifndef include_g_value
#define include_g_value
extern int g_itest; // 宣告引用全域性變數一
extern int g_dtest; // 宣告引用全域性變數二
#endif
//---------------------------------------
// 定義全域性變數 test.cpp中宣告
int g_itest; // 宣告全域性變數一
int g_dtest; // 宣告全域性變數二
// ......
//---------------------------------------
// 在使用的變數的地方, 新增 #include "valuedef.h"
// 就行了...
7樓:匿名使用者
這個我們以前學的編譯原理中有個程式用到過,它當時的解決辦法是:
在主函式中宣告這一變數
然後在一個全域性變數定義的標頭檔案中再對它宣告,不過這時候宣告是有區別的(防止重複定義) 加上一個關鍵字 extended ……
然後其他cpp檔案中呼叫這一個標頭檔案
當時那個大程式這樣就行了。具體細節我也忘了,你可以試著
在c++中,在檔案中宣告的public的變數,如何做才能使這個變數在cpp檔案一個方法中被賦值
8樓:機甲戰士
extern int a;
在cpp檔案中:
#include"變數a所在標頭檔案名"
int a = 0;...
9樓:匿名使用者
在方法的最後把值給還原,改變的值用別的變數代替
10樓:匿名使用者
呼叫方法的時候,把這個變數按引用傳給方法即可
c 中怎樣將類放在標頭檔案中,怎樣將類宣告放在標頭檔案,將類實現和主函式分別放在兩個原始檔裡?
小丁創業 實現的方法和詳細的操作步驟如下 1 第一步,開啟 zdvc 6.0 編譯器,然後選擇 新建 選項,見下圖,轉到下面的步驟。2 第二步,完成上述步驟後,選擇檔案,然後選擇c c 標頭檔案,在右側 的檔名中輸入要使用的標頭檔案的名稱,輸入名稱後單擊確認,見下圖,轉到下面的步驟。3 第三步,完成...
C 為什麼不要把函式定義都放標頭檔案裡
happy黃東陽 要害主要還是在標頭檔案定義類會暴露具體的實現方法,而在matlab這種軟體的一些自帶矩陣運算函式都是經過他們公司的研究實現的最高效的演算法,涉及到智慧財產權,源 自然不會給你看,這時候只提供給你編譯好的庫檔案和標頭檔案就能避免洩露,至於重新編譯標頭檔案沒什麼影響,因為標頭檔案還有庫...
聽說h字尾的檔案是c語言的標頭檔案,不是c 的。c 的
lz的說法有誤。include只是文字包含,具體一點地說,在一般的實現中,只要是可以正常訪問的文字檔案,無論是什麼副檔名 甚至不含副檔名 前處理器僅僅把文字的內容複製到 include所在行並刪除此行,也就是用文字檔案的內容替換 include所在的這一行而已,而不會在 include進行時因為檔名...