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
相關文章
- 語法與語義
- awk指令碼語言程式設計指南指令碼程式設計
- HTML基本語法和語義HTML
- SAPGUI裡實現自定義的語法檢查GUI
- c語言程式設計題C語言程式設計
- ABAP 程式語言裡的 Reference Semantic - 引用語義
- C 語言常用錯誤程式碼釋義大全,讓你編譯執行報錯不是煩惱編譯
- c語言的定義與宣告C語言
- C語言程式碼區錯誤以及編譯過程C語言編譯
- 計算機程式語言的分類,解釋型語言、編譯型語言、指令碼語言的關係計算機編譯指令碼
- C語言——設計printf除錯巨集C語言除錯
- 結對程式設計(c語言)程式設計C語言
- 聊聊C語言/C++—程式和程式語言C語言C++
- C++ 的指令碼語言:ChaiScriptC++指令碼AI
- 三句義的程式語言
- Laravel-admin 自定義擴充套件,jQuery 語法錯誤?Laravel套件jQuery
- 史上最全shell指令碼程式設計語法上冊指令碼程式設計
- 從錯誤處理看 Rust 的語言和 Go 語言的設計RustGo
- 4- C語言常見錯誤C語言
- C語言筆記——自定義型別C語言筆記型別
- Java語言程式設計—迴圈語句Java程式設計
- 使用PHP實現詞法分析與自定義語言PHP詞法分析
- C 語言程式設計利器之 CLion程式設計
- 資料定義語言(DDL)
- 【指令碼】shell語法指令碼
- 為什麼自制指令碼語言是程式語言的最高境界?指令碼
- List Incarnation 語法含義
- 如何自定義python語法.Python
- C 語言程式碼總結
- 使用C語言程式設計的7個步驟C語言程式設計
- 20201022-成信大-C語言程式設計-20201學期《C語言程式設計B》C-trainingExercises26C語言程式設計AI
- 語義網路術語
- 如何實現SAP GUI的自定義語法檢查(Syntax check)GUI
- c語言函式指標的定義C語言函式指標
- ASP程式中常使用的幾種指令碼語言指令碼
- C語言簡單程式碼程式C語言
- Python函數語言程式設計術語大全Python函數程式設計
- ‘程式語言‘ ’程式設計工具’程式設計
- 比特幣指令碼語言比特幣指令碼