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