linux内核_Linux内核编程风格简介
當今世界上一共有5000多種語言。不同的國家、民族和地區,說著不同的語言。每個民族不一定有自己的文字,但一般都會有自己的語言。即使是同一種語言,在不同的時代、不同的地區和群體,說話的方式和語言風格也各不相同。同樣是劉備《三顧茅廬》的故事,如果換成不同的人去說,你會發現說話方式和語言風格大相徑庭:
TVB腔:吶,做人呢,最重要的是開心。玄德你餓不餓,我煮碗面給你吃。
日系風:玄德桑是懷著對天下美好的期盼來的吧,真是讓人無法拒絕呢。
歐美翻譯腔:噢!上帝!你怎么來三次了!我對上帝發誓,我不是故意要你等的!
東北腔:艾瑪!您來就來吧,您還來三次,這整滴啥玩意兒啊?快進來吧,都哆嗦了。
班主任腔:讓你來三次,是為了你好!以后你就知道了!
知乎大V風:謝邀,人在南陽,剛下飛機。作為臥龍崗小透明,圈子小熟人多所以先匿了。一覺起來這么多贊,看到玄德兄等了這么久,又實名反對高贊答案,不知能否私信分享下:吃了三次閉門羹是一種怎樣的體驗?
如果換成郭敬明,話風可能又變成這樣:在這無盡的寂寞里,時間化為了灰燼,大雪逆轉了天地。而我在這里靜靜地等待,等待宿命之輪開啟它的輪轉。我知道你一定會再來,第三次,玄德,我會讓你,自由地…
02C語言的編程風格C語言也是一種語言,同樣可以匹配語言的基本三要素:語音、詞匯和語法。同樣是C語言編程,不同的平臺、項目、公司、社群,編碼風格也是風格迥異,各不相同。
在Windows下編寫一個C語言函數,我們通常使用下面的命名方式:
void OpenDoor(void);而在Linux下編寫一個C語言函數,我們更喜歡使用下面的命名方式:
void open_door(void);而同樣是在Linux環境下,如果是一個GNU項目,函數的命名通常又變成了這樣:
voidopen_door (void);不同的開發環境,不同的平臺,不同的公司,不同的項目,編程規范和代碼風格可能各不相同,我們需要遵守的原則其實也很簡單:入鄉隨俗。
03Linux內核編碼風格在Linux內核源碼的Documentation/process/coding-style.rst文件里,詳細講述了Linux內核編程時需要遵循的一些編程規范。
1.縮進
代碼的縮進使用tab鍵,建議是8個空格
大家在編寫代碼時,縮進要使用tab鍵,而不是直接敲4個或8個空格。tab鍵的縮進可以通過IDE的選項調節,也可以在vim的vimrc配置文件中設置。使用tab鍵縮進8個空格,可以讓代碼的層次結構更加清晰,但帶來的弊端是當程序嵌套的層次很深時,縮進會使每一行寫代碼的空間大大減少。為了預防這種情況發生,在Linux內核源碼的switch-case語句中,case語句一般都是和switch頂格寫,不縮進。
2.空格
在Linux內核中,使用空格的地方主要分布如下
在if、switch、case、for、do、while后,和(之間要加一個空格
二元運算符:+、-、|、*、=、== 等兩側一般要加空格
函數名、一元運算符++、--等后面一般不用加空格
小括號里表達式的兩側一般不要加空格
sizeof、typeof、alignof、__attribute__后面一般不要加空格
3.換行
一般在if、switch、case、for、do、while后的大括號不能單獨占一行,但函數的一對大括號可以單獨各占一行。函數的參數一行寫不下,可以換行寫,各個函數之間一般也要空一行。
在if-else分支結構中,else分支和大括號一般不會單獨占一行,而是和if分支的}寫在同一行。
04格式化工具:indentLinux提供了一個好用的工具:indent,可以對我們編寫的C語言代碼進行格式檢查。indent的安裝和使用都很方便:
# apt install indent# indent -linux -ce hello.cindent默認的風格是GNU,如果你編寫的程序代碼很亂,沒有留空格,沒有換行,沒有縮進,閱讀性很差,如下所示:
我們使用上面的indent命令對這段代碼進行處理后,再次使用vim打開,你會發現代碼風格就變成了下面這個樣子,瞬間整潔了不少:
在 indent -linux ?-ce main.c命令中,-linux參數表示按照Linux風格來格式化代碼:空格、縮進按照內核的規范,大括號不單獨占一行。-ce參數表示else分支不單獨占一行,如果你使用-nce參數,else分支則會單獨占一行。
除此之外,indent工具還有很多可選參數供我們參考,你可以通過indent --help或man indent命令來查看這些參數的詳細使用說明。
如果你想有自己的編碼風格,你可以將這些格式化參數保存在~/.indent.pro文件中。以后你每次使用indent xx.c格式化一個C文件時,indent就會根據這個配置文件中保存的參數來格式化xx.c文件。
Linux內核源碼中的scripts/Lindent腳本,可以對Linux內核代碼進行格式化設置。這個Lindent腳本內部其實也是通過調用indent命令來運行的。
05小結以上給大家介紹了Linux內核中的代碼風格和格式化工具indent的使用。由于篇幅關系只介紹了其中一小部分,更多的編碼規范和細節可以去閱讀內核源碼中的Documentation/process/coding-style.rst文檔。
總結
以上是生活随笔為你收集整理的linux内核_Linux内核编程风格简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 请检查virtualboxapi是否正确
- 下一篇: html input不能输入小数_【Py