最近開發編寫一個測試設備的程序(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
|