導航:首頁 > 源碼編譯 > 編譯器限制塊嵌套過深

編譯器限制塊嵌套過深

發布時間:2023-01-26 13:13:07

⑴ 華為c語言編程規范是怎樣的

代碼總體原則
清晰第一。清晰性是易於維護、易於重構的程序必須具備的特徵。
簡潔為美。簡介就是易於理解並且易於實現。
選擇合適的風格,與源代碼風格保持一致。
頭文件
頭文件的設計體現了大部分的系統設計,不合理的頭文件布局是編譯時間過長的根因,實際上是不合理的設計。
頭文件中適合放置介面的聲明,不適合放置實現。
頭文件應當職責單一。
頭文件應向穩定的方向包含。
每一個.c文件應有一個同名的.h文件,用於聲明需要對外公開的介面。
禁止頭文件循環依賴。
禁止包含用不到的頭文件。
頭文件應當自包含。
編寫內部#include保護符(#define保護)。
禁止在頭文件中定義變數。
只能通過包含頭文件的方式使用其他C提供的介面,禁止在C中通過extern的方式使用外部函數介面和變數。
禁止在extern "C"中包含頭文件。
函數
函數設計的精髓:編寫整潔函數,同事把代碼有效組織起來。
一個函數僅完成一個功能。
重復代碼應該盡可能提煉成函數。
避免函數過長,新增函數不超過50行。
避免函數的代碼塊嵌套過深,新增函數的代碼塊嵌套不超過4層。
可重入函數應避免使用共享變數;若需要使用,則應該通過互斥手段對其加以保護。
對參數的合法性檢查,由調用者負責還是介面函數負責,應在項目組模塊內統一規定。預設由調用者負責。
對函數的錯誤返回碼要全面處理。
設計高扇入,合理扇出(小於7)的函數。扇出是指調用其它函數的數目。扇入是指有多少上級函數調用它。
廢棄代碼要及時清除。
函數參數不變使用const限定。
函數應避免使用全局變數、靜態局部變數和I/O操作,不可避免的地方應集中使用。
檢查函數所有非參數輸入的有效性,如數據文件、公共變數等。
函數的參數個數不超過5個。
在源文件范圍內聲明和定義的所有函數,除非外部可見,否則應該加static關鍵字。
標識符
標識符的命名要清晰、明了,有明確含義,同時使用完整的單詞或大家基本可以理解的縮寫,避免使人產生誤解。
產品、項目組內應保持同意的命名分格。
盡量避免名字中出現數字編號,除非邏輯上確實需要。
重構、修改部分代碼時,應該保持和原有代碼風格一致。
文件命令統一採用小寫字元。因為不同系統對文件名大小寫處理會有不同(windows不區分大小寫,但是linux系統則區分)。
全局變數應增加「g_」前綴。
靜態變數應增加「s_」前綴。
禁止使用單位元組命名變數,但是允許定義i,j,k作為局部循環變數。
不建議使用匈牙利命名法。
對於數值或者字元串常量的定義,建議採用全大寫字母,單詞之間加下劃線的方式命名。
變數
結構功能單一,不要設計面面俱到的數據結構。
不用或者少用全局變數
防止局部變數與全局變數同名
通訊過程中使用的機構,必須注意位元組序。
嚴禁使用未經初始化的變數作為右值。
使用面向介面編程思想,通過API訪問數據。
盡量減少沒有必要的數據類型默認轉換與強制轉換。
宏和常量
用宏定義表達式時,要使用完備的括弧。
將宏定義的多條表達式放在大括弧中。
使用宏時,不允許參數發生變化。
不允許直接使用魔鬼數字。
除非必要,應盡可能使用函數代替宏。
常量建議用const定義代替宏。
質量
時刻注意易混淆的操作符
必須了解編譯系統的內存分配方式,特別是編譯系統對不同類型的變數的內存分配規則,如局部變數在何處分配、靜態變數在何處分配等。
不僅關注介面,同樣要關注實現。
禁止內存操作越界。
禁止內存泄漏。
禁止引用已經釋放的內存空間。
編程時,要防止差1錯誤。
switch語句必須有default分支。
函數中分配的內存,在函數退出之前要釋放。
不要濫用goto語句。
時刻注意表達式是否會上溢、下溢。
程序效率
在保證軟體系統的正確性、簡潔、可維護性、可靠性及可測試性的前提下,提高代碼的效率。
通過對數據結構、程序演算法的優化來提高效率。
將不變條件的計算移到循環體外。
對於多維大數組,避免來回跳躍式訪問數組成員。
創建資源庫,以減少分配對象的開銷。
將多次被調用的「小函數」改為inline函數或者宏實現。
注釋
優秀的代碼可以自我解釋,不通過注釋即可輕易讀懂。
注釋的內容要清楚、明了,含義准確,防止注釋二義性。
修改代碼時,維護代碼周邊的所有注釋,以保證注釋與代碼的一致性。不再有用的注釋要刪除。
文件頭部應進行注釋,注釋需要列出:版權說明、版本號、生成日期、作者姓名、工號、內容、功能說明、與其他文件的關系、修改日誌等,頭文件的注釋中還應有函數功能的說明。
函數聲明處注釋描述函數功能、性能及用法,包括輸入和輸出參數、函數返回值、可重入的要求等;定義處詳細描述函數功能和實現要點,如實現的簡要步驟、實現的理由、設計約束等。
全局變數要有詳細的注釋,包括對其功能、取值范圍以及存取時注意事項等的說明。
盡量採用工具可以識別的格式注釋。
排版與格式
程序塊採用縮進風格編寫,每級縮進為4個空格。
相對獨立的程序塊之間、變數說明之後必須加空行。
一行只寫一條語句。
對等操作兩邊加空格,注釋符與內容之間加空格。
編譯
使用編譯器的最高告警級別,理解所有的告警,通過修改代碼而不是降低告警級別來消除所有告警。
在產品軟體中,要統一編譯開關、靜態檢查選項以及相應告警清除策略。
可測性
模塊劃分清晰,介面明確,耦合性小,有明確輸入和輸出,否則單元測試實施困難。
在統一項目組或產品組內,調測列印的日誌要有統一的規定。
使用斷言記錄內部假設。
不能用斷言來檢查運行時錯誤。

⑵ fatal error C1061錯誤,,for()語句太多,怎麼解決、

編譯器限制:塊嵌套過深。。。
改為:
void main()
{
static int e[500], i;
。。。。。
for(i = 0;i < 500;i ++){
for(e[i]=n1;e[i]<=n2;e[i]++){
。。。。。
}

}

⑶ C1061:編譯器限制 塊嵌套太深.怎麼解決

嵌套太深。。。你得幾級嵌套啊,應該是不合理的邏輯

閱讀全文

與編譯器限制塊嵌套過深相關的資料

熱點內容
文件夾圖標如何改成公會logo 瀏覽:973
怎樣創建job文件夾 瀏覽:831
介紹單片機外設的書籍推薦 瀏覽:56
通達信雙柱擒牛指標源碼 瀏覽:467
內存太大解壓失敗怎麼辦 瀏覽:441
linuxmakefile解析 瀏覽:777
單片機原理與應用李林功 瀏覽:39
pythonorm框架有哪些 瀏覽:431
indesign轉pdf 瀏覽:483
javaweb找源碼 瀏覽:26
浪潮物理伺服器如何重啟 瀏覽:602
aes加密性能下降 瀏覽:449
linux驅動結構 瀏覽:868
psv安裝壓縮包 瀏覽:613
錦州聯通DNS伺服器地址 瀏覽:115
伺服器佔用太多的網路怎麼辦 瀏覽:936
設置ftp共享文件夾win10 瀏覽:793
伺服器和主機是什麼意思 瀏覽:638
自製透明收納文件夾 瀏覽:164
testflight怎麼下載安卓軟體 瀏覽:180