C語言程式設計十大建議——語法語義篇:使用指令碼檢查部分語義錯誤
1.親核字串、陣列操作之越界與否。不然,很可能出現程式可以編譯通過,但是最終卻給出了錯誤的結果。另外指標和陣列的越界訪問,很容易出發segment fault
2.不要重寫標準庫函式,把函式名改成你自己才懂得的晦澀的名字,遵循一種統一的程式設計規範。
3.在書寫switch case和定義相同結構的變數的時候,如果為了少手動來寫一部分程式碼,直接採用複製貼上的形式,那麼很有可能你的某個便另定義是錯誤的(直接copy了錢一個變數的值,而沒有做對應的修改)。
4.scanf後面沒有加&,switch中漏掉break,=和==的誤用
5.使用一些危險的,有可能產生越界的庫函式,例如gets等。
6.多加或者少用了分號,while後if後面,會導致邏輯錯誤。
7.函式的宣告最好和定義分離,函式要先宣告,後使用
8.迴圈邊界的確定,邊界的+1還是-1,從迴圈中出來以後值是多少,往往是一些關鍵節點。
當程式的邏輯和你預想的邏輯不符的時候,想想什麼地方可能出現問題:其中,4、5、6三點是最容易出現問題的地方;如何避免這類問題浪費掉大量除錯時間呢?寫一個指令碼,每次都檢查這幾個地方!
給一個sed指令碼,可以檢測for、while、if後面多加的分號問題:
1 #n
2 /^[\ \t]*if/{
3 /);/p
4 }
5
6 /^[\ \t]*while/{
7 /);/p
8 }
9
10
11 /^[\ \t]*for/{
12 /);/p
13 }
更多的語法正確而語義錯誤的例子,可以參考:http://blog.csdn.net/ipmux/article/details/17350933
相關文章
- 使用CHECKSYNTAX命令檢查RMAN指令碼是否存在語法錯誤指令碼
- 語法與語義
- RMAN中檢查指令碼語法錯誤的命令指令碼
- C語言(巨集定義)C語言
- C語言EOF含義C語言
- awk指令碼語言程式設計指南指令碼程式設計
- C語言程式設計C語言程式設計
- HTML基本語法和語義HTML
- Swift 語言的設計錯誤Swift
- SAPGUI裡實現自定義的語法檢查GUI
- 【程式語言】C/C++中如何使用Lua指令碼C++指令碼
- ABAP 程式語言裡的 Reference Semantic - 引用語義
- C語言程式設計原理C語言程式設計
- c語言程式設計題C語言程式設計
- c語言的定義與宣告C語言
- 計算機程式語言的分類,解釋型語言、編譯型語言、指令碼語言的關係計算機編譯指令碼
- 奇怪的C語言——C51程式設計C語言注意事項C語言程式設計
- 《D程式設計語言》中的低階錯誤程式設計
- C語言——設計printf除錯巨集C語言除錯
- C語言程式碼區錯誤以及編譯過程C語言編譯
- C語言MySQL程式設計示例C語言MySql程式設計
- C 語言程式設計(unix) (轉)程式設計
- 結對程式設計(c語言)程式設計C語言
- 聊聊C語言/C++—程式和程式語言C語言C++
- 如何在 Shell 指令碼中執行語法檢查除錯模式指令碼除錯模式
- 三句義的程式語言
- XML 程式設計思想:XML語義(轉)XML程式設計
- c語言函式指標的定義C語言函式指標
- C語言筆記——自定義型別C語言筆記型別
- C語言未定義行為一覽C語言
- C++ 的指令碼語言:ChaiScriptC++指令碼AI
- 解析程式碼的利器 Spp 語法描述語言
- 資料定義語言(DDL)
- C 語言高效程式設計與程式碼優化程式設計優化
- 使用PHP實現詞法分析與自定義語言PHP詞法分析
- 從錯誤處理看 Rust 的語言和 Go 語言的設計RustGo
- 谷歌大牛的 C 語言程式設計建議和技巧谷歌程式設計
- 4- C語言常見錯誤C語言