最近開發編寫一個測試設備的程序(C程序),在定義一個全局變量的時候,之前我喜歡在定義的時候直接賦值,如這樣:
unsigned char a=0;//這裡直接給變量a定義並賦值
void main_function()
{
//在這裡使用a
...
}
不過這樣做的時候卻有時可能要出問題,比如可能導致在後期使用的時候a可能不等於0。最近就被這個故障煩了好久,起初檢查好幾遍了都無頭緒,最後用串口把變量a傳出顯示才發現,a的數值變了,
a咋會變呢?你打si也想不到它會變心,
最後改為如下面的定義和賦值單獨進行,問題才得以解決,
unsigned char a;//定義a
void main_function()
{
a=0;//給a賦值
...
}
其實之前按照前一種方式做的也都沒有問題,不過最近又修改了不少代碼才出了故障。有時候看似省了一行代碼,其實導致了不可預見的不穩定的bug,還是應當按照規範來,畢竟,找出這個問題在哪裡實在太不容易了,要花很多時間和嘗試。
更多幹貨,盡在微信公眾號:yonkotech
閱讀更多 永珂在線 的文章