對進場1工作,你需要定義兩個文件:
,您聲明所有的常量的頭文件;
一個.m文件,其中您的常量被定義和初始化。
在您的例子:
/* .h file */
extern const int numOfSamples;
/* .m or .c file */
const int numOfSamples = 7;
然後,您在哪裏,你需要這些常量對其他文件的.H頭。注意關鍵字extern
,這將聲明變量而不定義;通過這種方式,您可以多次包含.h文件而不會有重複的符號錯誤。
編輯:
我建議的方法是處理在C程序的全局變量的正確方法。
現在,如果全局變量是一件好事,那麼這是一個更長的故事。
一般來說,全局變量是棘手的,與40年的努力背道而馳,致力於在程序中更好地封裝(即信息隱藏)數據和行爲(參見"On the Criteria to Be Used in Decomposing Systems Into Modules",David Parnas,1972)。
爲了進一步解釋這一點,問題的一個方面正如你在評論中提到的那樣:一個模塊更改全局變量值從而影響整個程序行爲的可能性。這被認爲是不好的,會導致無法控制的副作用(在任何非常規的程序中)。
就你而言,我認爲事情有點不同,因爲你在談論「配置」和「常量」的值。這是一個完全不同於一般的情況,我認爲你可以安全地使用const的頭文件來實現這個目標。
這就是說,你知道配置的整個主題是一個巨大的一般。例如,您可能需要機制來即時更改程序配置;在這種情況下,常量變量頭方法是不正確的。或者,您的程序配置可能取決於某個遠程系統的狀態(想象一下:您已登錄而您沒有登錄)。
我不能保證使用頭文件是您的案例的最佳方法,但我希望上述討論和我給你的例子可以幫助你弄清楚。
非常感謝。這是一種「好」的方式,還是「流行」的方式呢?如果它們不是const的,那麼在這種方法中,所有使用它們的類都可以改變它們 - 每個人都會看到這種改變? – Curnelious
請看,我的編輯。 – sergio
非常感謝。這正是我所看到的。所以使用const是一個好方法,因爲你不改變它們,所以不會產生衝突。 – Curnelious