linux下的C語言編碼風格

2021-10-24 06:30:56 字數 3440 閱讀 6998

語句行首最好是8個字元的縮排

switch

(suffix)

一行只有一條語句,錯誤示範如下:

if

(condition) do_this;

長度超過80另起一行,但不要折斷字串

非函式語句,左花括號放在最後,且與前面空一格

if

(x is true)

函式語句,左花括號另起一行

int

function

(int x)

do-while語句

do

while

(condition)

;

if-else語句

if

(x == y)

else

if(x > y)

else

單條語句不需要使用花括號

if

(condition)

do_this()

;else

do_that()

;

while

(condition)

關鍵字if, switch, case, for, do, while後面接空格

if

(condition)

action()

;

sizeof, typeof, alignof等關鍵字後面不需要接空格

s =

sizeof

(struct file)

;

括號內兩邊不需要加空格,錯誤示範如下:

s =

sizeof

(struct file )

;

指標符號要挨著資料名

char

*linux_banner;

unsigned

long

long

memparse

(char

*ptr,

char

**retptr)

;char

*match_strdup

(substring_t *s)

;

二元或三元運算子= + - < > * / % | & ^ <= >= == != ? :兩邊要加空格

s = a + b;
一元運算子& * + - ~ !不用加空格

*b =

&a;

遞增++和遞減–不需要加空格

a++

;

結構體相關.和->不用加空格

file.

open()

;

盡量避免混合大小寫,變數名要求簡潔明瞭,如臨時變數定義:

int tmp;
全域性變數或函式可以使用比較詳細的描述性的名稱

count_active_users()

;

區域性變數盡量簡短,計數變數的定義:

int i;
盡量避免使用typedef定義結構體結構體指標,如下面的vps_t,讓人完全看不出來a是個什麼型別的變數

vps_t a;
使用如下方式來宣告結構體結構體指標,清晰明了

struct virtual_container *a;
對外不透明的結構體結構體指標型別可以用typedef來定義,如定義乙個pte_t型別,你不需要了解它的具體內容

一些整形資料可以用typedef加以區分,如u8、u16、u32分別被定義成不同長度的整型資料

乙個函式的區域性變數盡量不要超過5-10個,否則就該思考如何將其分解成更小的部分

函式與函式之間隔一行

匯出函式緊隨函式其後

int

system_is_up

(void

)export_symbol

(system_is_up)

;

在函式原型中,寫全引數名及其資料型別注釋一般放在函式的前面,描述函式的功能,風格如下:

/*

* this is the preferred style for multi-line

* comments in the linux kernel source code.

* please use it consistently.

* * description: a column of asterisks on the left side,

* with beginning and ending almost-blank lines.

*/

巨集定義常量一般為大寫

#define constant 0x12345
巨集定義函式可以用小寫,包含多條語句時,寫在do-while塊中

#define macrofun(a, b, c)			\

do while (0)

不要在巨集定義中使用return語句,錯誤示範:

#define foo(x)					\

do while (0)

巨集定義不能依賴本地變數,錯誤示範:

#define foo(val) bar(index, val)
巨集定義要使用括號以確定優先順序

#define constant 0x4000

#define constexp (constant | 3)

如果函式名是乙個動作或命令,則執行成功返回0,否則返回其他;如果函式名是詢問,則執行成功返回1,否則返回0

在#endif後面給上注釋

#ifdef config_something..

.#endif

/* config_something */

參考資料:

語言編碼風格

打算重新學習一下程式語言,已c語言為例,本類文章主要記述學習過程。c語言的程式設計風格,好的程式設計風格能讓人一眼看明白 的含義,並且讓 就像是藝術品一樣精彩,一下為參考一下優秀的注釋內容和 內容來使自己的 清晰易懂,便於維護 這是乙個事例程式,版權屬於cc 使用陣列的乙個例子 include vo...

C語言編碼風格(四) 函式

每個函式都應該設計得盡可能簡單,簡單的函式才容易維護。應遵循以下原則 實現乙個函式只是為了做好一件事情,不要把函式設計成用途廣泛 面面俱到的,這樣的函式肯定會超長,而且往往不可重用,維護困難。函式內部的縮排層次不宜過多,一般以少於4層為宜。如果縮排層次太多就說明設計得太複雜了,應考慮分割成更小的函式...

學習linux的編碼風格

對於編碼,每個碼農或許都會有自己的一套風格,很多人可能對編碼風格壓根就不關心,因為最終編譯器編譯出來的目標 並不會受影響。但是在開發乙個大型專案時,花費時間成本最多的永遠是開發者們之間的溝通與交流。保持編碼風格的一致性可以在很大程度上提高編碼效率,可以讓其他人更容易讀懂你的 也讓你更容易讀懂其他人的...