① 為什麼在keil MDK中stm32程序最後一行要求空行
C 語言是在 Unix 中橋櫻發明的,為 Unix 系統的編程語言,它對文件的處理遵循一個基本的原則:
文件是流式的,可以被任意的拼接並且拼接後仍然保證完整性。
在 Unix 中 符號被定義為一擾消瞎行的『結束符』,換句話說,如果一行的結尾沒有 視為這一行沒有結束,換句話說這個文件不完整,也就是說這根本不是一緩空個合法的文本文件。
在 Windows 中,微軟把 定義為兩行之間的『分隔符』而非結束符,所以 Unix 文件結尾的 ,在 Windows 看起來就是一個空行,而這一個空行在 Unix 中並不存在,如果你使用 Vim 之類的文本編輯器,會根本看不到最後這個空行。
不遵守標准會帶來的問題是:如果 是兩行之間的分隔符,那麼最後一行不帶 ,結果是拼接兩個文件時,後一個文件的第一行就會被拼到前一個文件的最後一行,這很可能會造成語意錯誤。
比較常見的例子是:
前一個文件最後一行是 } 後一個文件第一行是 #include,如果 } 後面沒有結束符,拼接之後就成了 }#include ,立即發生語法錯誤。