你會說「用全域性變數可不是個好習慣!」。但在嵌入式系統中不同。舉個例子,你有乙個名為timer.c
的檔案,其中有個全域性變數int counter
,在另乙個檔案state_machine.c
中,有另乙個counter
。如果你碰巧忘記了在它們之前加上』static』,它們就是同乙個變數,你根本察覺不到,沒有warning,沒有任何提示……
這種行為看起來十分奇怪,尤其是當關鍵字extern
就在手邊的時候。不過當你熟悉static
的兩種不同的意義後,就可以輕易避免這種情況了。不過這依然十分令人討厭。
有人能解釋一下為什麼static
在函式體中和函式體外有著兩種完全不同的意義嗎?在函式體中,他表示「靜態」——「在函式呼叫過程中保持這個變數唯一」。但是在函式體外,它的意義完全改變,成了「該變數為該檔案私有的」。為什麼後者不用private
或者intern
呢?
在嵌入式程式設計中,我們總是喜歡用if ((x&mask) == 0)
這樣的語句。但你可能常忘記寫裡面那對括號,因為感覺上,&的優先順序應該比==高。但是事實並非如此,因此必須使用這對多出來的括號。
不過,這個情況有個不錯的歷史原因。c語言誕生自b語言,而在b語言中只有&而沒有&&運算子。當ritchie引入&&運算子時,他們希望原有的b語言端的**能夠正常執行,因此使&的優先順序低於==
最近的一些事
前段時間,工作不是很忙,閒暇的時候,做了很多自己喜歡做的事情。組內乙個技術很厲害的員工,要離職了,給我們分享了他的很多東西,我們收穫很大。有的同學已經開始自己創業了,想邀請我加入,但是我現在確實還沒有那個信心。自己買了很多書,再一次把自己定位為乙個技術人員,開始堅持不懈的專研技術。身體素質大不如以前...
NOIP 的一些事
noip考完了,忍不住的有些話想說。想要狠狠地吐槽一句 今年你tm的考的都是些什麼題啊?完全沒有意義的好不好?記得考試前一天,早早的22 00就睡了,第二天早上頂著小雨到電子科大報到,一路上怒求rp 看到南實的坐車一直坐到基實樓下,還調侃了幾句。8 30到了,題發下來,一看,整個人都傻了。題怎麼這麼...
一些人,一些事,一些
我覺得這是國內it企業浮躁和傳統的官本位性質決定的,導致國內企業都本末倒置。要想改變命運,我覺得有以下出路 1.不做技術了,改做混混 混混的概念很廣泛的,比如銷售 經理 幹部 皮包公司之類其實都屬於這類。中國就是這樣,越浮越掙錢,只有混混才能發財。要不更進一步,做流氓,廣義的流氓,也很不錯。2.專心...