我的嵌入式系統工作重啓之後 - 不是Windows系統。靜態重新定義嵌入式系統C
我宣佈:
static uint_8 i = 0;
所以我在開始時刻定義0。
的問題:後復位是我重新定義爲0或它獲得在RAM ADRESS垃圾信息?例如,我是否需要編寫一個init函數來將i重新定義爲0?
謝謝
我的嵌入式系統工作重啓之後 - 不是Windows系統。靜態重新定義嵌入式系統C
我宣佈:
static uint_8 i = 0;
所以我在開始時刻定義0。
的問題:後復位是我重新定義爲0或它獲得在RAM ADRESS垃圾信息?例如,我是否需要編寫一個init函數來將i重新定義爲0?
謝謝
這取決於您的運行時庫(如果有的話)。如果您有一個現有的運行時庫,它可能會在啓動時將您的靜態數據初始化爲零(在main()
之前)。但是,某些嵌入式系統可能沒有完整的運行時庫支持,因此您可能必須自己完成此操作。
不,你不必。當一個程序啓動時,所有的靜態變量保證被初始化爲0。
C標準ISO/IEC 9899:TC2定義此以下面的方式。對象
其標識符被聲明與外部或內部的鍵,或者與存儲類 說明符的靜態具有靜態存儲持續時間的對象的
6.2.4存儲持續時間。其壽命是該程序的 整個執行和其存儲的值初始化 只有一次,編程啓動之前。
不要這麼說。 – Thomas 2012-08-01 08:10:34
對,格雷格提出了一個很好的觀點。 – 2012-08-01 08:12:35
謝謝你讓我_not_看起來像個傻瓜!我問「我們有運行庫嗎?因爲靜態應該重新定義」 - 並且我們沒有我們的系統中沒有這個庫。所以現在我正在寫這個init函數! – Thomas 2012-08-01 08:09:15
太棒了,聽起來很有趣。到過那裏! :) – 2012-08-01 08:12:30