1. c語言編寫規范有哪些
啊哦
這個很多啊 呵呵
在程序編譯方面沒有什麼約定 ,
在程序的排版方面,可以約定一些標准, 比如:
1 程序塊要採用縮進風格編寫,縮進的空格數為4個
2 對齊只使用空格鍵,不使用TAB鍵。
3 逗號、分號只在後面加空格。
int a, b, c;
4 比較操作符, 賦值操作符"="、 "+=",算術操作符"+"、"%",邏輯操作符"&&"、"&",位域操作符"<<"、"^"等雙目操作符的前後加空格 。
5 "!"、"~"、"++"、"--"、"&"(地址運算符)等單目操作符前後不加空格。
6 "->"、"."前後不加空格。
p->id = pid; // "->"指針前後不加空格
7 if、for、while、switch等與後面的括弧間應加空格,使if等關鍵字更為突出、明顯。
if (a >= b && c > d)
空格多數情況是作為詞法分析的分隔,多餘的空格一般是無關緊要(字元串除外),在語法分析之前已被刪除。
經典的關於空格的例子是:
int a=4;
int* p=&a;
int result=16/ *p; ( 此處必須在*p前加空格,否則在詞法分析時被解釋為注釋開始/* )
2. 華為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個空格。
相對獨立的程序塊之間、變數說明之後必須加空行。
一行只寫一條語句。
對等操作兩邊加空格,注釋符與內容之間加空格。
編譯
使用編譯器的最高告警級別,理解所有的告警,通過修改代碼而不是降低告警級別來消除所有告警。
在產品軟體中,要統一編譯開關、靜態檢查選項以及相應告警清除策略。
可測性
模塊劃分清晰,介面明確,耦合性小,有明確輸入和輸出,否則單元測試實施困難。
在統一項目組或產品組內,調測列印的日誌要有統一的規定。
使用斷言記錄內部假設。
不能用斷言來檢查運行時錯誤。
3. c語言中空格對編碼的影響
1、 C標准裡面規定的組成關鍵字的字元間不能出現空格,例如:
int 不能寫出 i nt
2、 定義用戶自定義標識符時,組成標識符的字元間不能有空格,例如:
int iAge; 不能寫成 int i Age;
3、 C語言定義的多字元組成的運算符之間不能有空格,例如:
iAge+=100; 這個地方的 +=之間就不能有空格, 這個現象僅限於兩字元或者三字元的運算符。當然 ? : 這個運算符除外。
4、 在編輯C源代碼時,用戶定義的字元串字面值,就是通常說的字元串常量的後引號之間,不能出現回車帶來的空格。例如:
「Hello word 」;
不能寫成:「Hello word
」;
在第四種情況下可以利用 「 \ 」 符號來消除編輯期間回車帶來的副作用。
例如: 「Hello Word」 ;就可以定義為
"Hello word \
"
*** 重點介紹一下 反斜杠 " \ "
我們知道當我們一行寫不下一個C語言語句時, 我們可以使用續行符 "\" 來續行,但是我們依然可以在一行可以寫下代碼時使用它。如:
Exp4:
printf("Hello Word\! ");
這里會輸出什麼呢? 一般我們學習是得到的教育是:printf裡面的第一個字元串參數原樣輸出,即會輸出: Hello Word\!
但是實際輸出卻不是上面描述的,而是:
Hello Word!
就是說在C語言編譯器裡面, 當我們使用單獨的一個 "\" 時他就是一個續行符, 哪怕這個續行是在一行也是一樣。 (當存在轉義序列時除外)
4. 小白剛學c語言的一個問題
C語言中任意一個函數,都是由以下部分組成的:
main()//函數名加一對圓括弧,圓括弧必須成對。
{}//函數體一對花括弧,花括弧也必須成對,否則會報錯,因為函數體不完成。
main(){}//很多編譯器這樣就可以編譯過,只是什麼都沒有執行而已。
也有很多編譯器要求函數有類型,要求主函數有返回值,那麼這時最簡單的c語言程序應該如下:
int main()
{
reture 0;
}
5. C語言的編程格式是怎麼樣的
C語言源程序的編程格式歸納如下:
1,強制性規則
1,一個C語言源程序必須有且只有一個MAIN函數.
2,函數名後必須緊跟圓括弧對,函數體放在右圓括弧")"後的花括弧對"{}"中.
3,每個程序體(包括函數的函數體,含有多條語句的選擇結構和循環結構中的語句序列)必須用一對花括弧括起來.
4,文件包含預處理命令,#INCLUDE<*.H>應置於源程序的開始位置.
5,語句未尾必須有分號,而預處理命令和函數首部的未尾及右花括弧之後不要分號.
6,同一字母大,小寫意義不同,關鍵字和標准庫函數名必須用小寫.
7,變數必須先定義,後使用
8,除已有明顯間隔符外,標識符,關鍵字之間必須有至少一個空格
9,註解必須包含在"/* */符號之間