2014-10-01 21 views
-3

我有幾個頭文件.h及其對應的.cpp文件。這裏假設我有part1.hpart2.h的聲明。對應的cpppart1.cpppart2.cpp用於定義功能。我應該如何定義這個變量?

我還有一個文件main。在這個主要功能中,我有一個變量float * change。作爲名稱,我將更改change的值,然後調用part1.cppG中定義的函數F,part2.cpp。問題是我不能通過change作爲參數。所以起初我打算把它定義爲一個全局變量。但後來我發現這個變量總是在變化。但是一個全局變量只能定義一次。那麼有什麼方法可以解決這個問題嗎?

預先感謝您。

+0

這個變量總是變化嗎?你在這裏意味着什麼? – Deduplicator 2014-10-01 17:35:58

+0

@Deduplicator,對不起。 change =(float *)malloc(1024); 「始終改變」的意思是「首先改變[1] = 10;」。但是在下面,有'change [1] = 100;' – Vivian 2014-10-01 17:50:26

回答

2

您可以在.cpp文件

float* change; 

然後於一體的一個定義變量爲正常的頭文件,你可以聲明它:

extern float* change; 

現在#include頭文件無論使用全局變量的地方。

+0

你好。我使用'global.h',我寫了'extern float * ptr'。我在主函數中定義ptr!我在每個使用它的文件中都包含「global.h」(part1.cpp; part1.h; main.cpp)。但有錯誤'錯誤lnk2001未解析的外部符號'。你能告訴我該如何解決嗎? – Vivian 2014-10-01 18:04:08

+0

你好。我解決了它。我必須在主函數之外做一些類似'float * ptr'的事情。然後錯誤消失了。這是正確的嗎? – Vivian 2014-10-01 18:06:38

+0

@Vivian是的,這是正確的。全局變量必須在所有函數之外。當你在'main()'中聲明一個變量時,它是本地的,而不是全局的。 – 2014-10-01 18:17:20

1

中聲明你的頭

extern float * change; // does not define the variable, but just that it exists somewhere 

您也可以在part1.cpppart2.cpp,而不是常見的頭直接申報本之一。但是,如果稍後要更改某些內容,例如浮動到double,則不應該忘記任何這些聲明。

記住Stroustrups名言:「//全局變量 - 避免那些可以」