淺談C語言中的注釋風(fēng)格小結(jié)
C語言中常用的注釋風(fēng)格有兩種,一種是通過如下模式進(jìn)行一段代碼的注釋:
/* comment*/
另一種是單行注釋符號(hào):
// comment
學(xué)生時(shí)代的注釋我一般是選用后者,那時(shí)候編碼量十分有限,即使是簡(jiǎn)單的小段落注釋使用的IDE也支持批量添加單行注釋符。而在編碼之中,簡(jiǎn)單的單行注釋進(jìn)行注釋的時(shí)候鍵盤的操作更為簡(jiǎn)單一點(diǎn)。
不過,工作之后接觸了相應(yīng)的編碼規(guī)范之后,C語言的注釋我基本上放棄了單行注釋的方法,最多僅僅在調(diào)試的時(shí)候做簡(jiǎn)單的使用。
其實(shí),單行注釋是從C++中借鑒來的,算是C++風(fēng)格的注釋方式。而這種方式在C語言中有時(shí)候會(huì)帶來一定的差異性,甚至是引入難以察覺的Bug。把我自己從網(wǎng)絡(luò)或者書籍中看到的兩個(gè)比較典型的方式列述總結(jié)一下。
示例1:
#include"stdio.h" int main(void) { int a = 0; a += 5; \ a = 123; printf("value of a: %d\n",a); return 0; }
代碼的編譯運(yùn)行結(jié)果如下:
E:\WorkSpace\01_編程語言\01_C語言\exp_26>gcc exp_26.c
E:\WorkSpace\01_編程語言\01_C語言\exp_26>a
value of a: 123
代碼其實(shí)很簡(jiǎn)單,第一次對(duì)a進(jìn)行的數(shù)值修改其實(shí)是一個(gè)沒用的冗余代碼。如果發(fā)現(xiàn)類似的問題,可能進(jìn)行一下簡(jiǎn)單的屏蔽,修改代碼如下:
#include"stdio.h" int main(void) { int a = 0; //a += 5; \ a = 123; printf("value of a: %d\n",a); return 0; }
代碼的編譯運(yùn)行結(jié)果如下:
E:\WorkSpace\01_編程語言\01_C語言\exp_26>gcc exp_26.c
E:\WorkSpace\01_編程語言\01_C語言\exp_26>a
value of a: 0
這個(gè)結(jié)果很多時(shí)候會(huì)出乎很多人的意料,因?yàn)榘l(fā)現(xiàn)結(jié)果居然不再是123!其實(shí),原因就在于屏蔽的那一行代碼最后面多了一個(gè)續(xù)行的符號(hào)。這樣使得注釋的作用持續(xù)到了下一行。其實(shí),很多編譯器在這方面都會(huì)有相對(duì)精準(zhǔn)的判斷給出提示,比如說我最近在使用的VIM就能夠通過顏色的變化提示出第二行也被注釋掉了。而擅長(zhǎng)語義分析的Source Insight在這方面倒是沒有做好,不知道最新推出的V4版本中是否對(duì)此有所改進(jìn)。
示例2:
#include"stdio.h" int main(void) { int a = 123; int b = 23; int c; c = a //* //*/b ; printf("value of c:%d",c); return 0; }
從《C專家編程》中摘出了這個(gè)例子,按照書中的介紹,c的賦值運(yùn)算相關(guān)3行在C語言中表示a/b而在C++中表示a。不過,或許是成書時(shí)間比較早,自我我的機(jī)器以及軟件上,這個(gè)說法顯然是不成立了。即使是咋C語言中,上面的表達(dá)式也是表示c = a。不過,程序的可讀性確實(shí)是給了我們一個(gè)不小的挑戰(zhàn)。我專門注意了一下編輯器對(duì)此的識(shí)別,在此環(huán)節(jié)中,VIM以及Source Insight全都識(shí)別準(zhǔn)確。值得一提的是,前面的這兩個(gè)例子如果使用NotePad ++,編輯器的提示也全都是準(zhǔn)確的。
代碼的編譯執(zhí)行結(jié)果如下:
E:\WorkSpace\01_編程語言\01_C語言\exp_27>gcc exp_27.c
E:\WorkSpace\01_編程語言\01_C語言\exp_27>a
value of c:123
由此看來,很多嵌入式的編碼規(guī)范中要求不能夠用C++單行注釋風(fēng)格的注釋方式還是有一定道理的。雖說是帶來了一定的不方便,但是確實(shí)是能夠避免一些小問題的出現(xiàn)。
以上這篇淺談C語言中的注釋風(fēng)格小結(jié)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MFC對(duì)話框中實(shí)現(xiàn)走馬燈效果
這篇文章主要為大家詳細(xì)介紹了MFC對(duì)話框中實(shí)現(xiàn)走馬燈效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05嵌入式C語言輕量級(jí)程序架構(gòu)內(nèi)核編寫
這篇文章主要介紹了嵌入式C語言輕量級(jí)程序架構(gòu)內(nèi)核編寫,文章將讓大家學(xué)到輕量級(jí)程序架構(gòu)的內(nèi)核實(shí)現(xiàn)原理、輕量級(jí)程序架構(gòu)的設(shè)計(jì)思想、了解單片機(jī)常用的程序架構(gòu)等更多C語言輕量級(jí)程序架構(gòu)相關(guān)內(nèi)容,需要的朋友可以參考一下2022-03-03C語言中全局?jǐn)?shù)組和局部數(shù)組的問題
今天同學(xué)遇到一個(gè)在C語言中全局?jǐn)?shù)組和局部數(shù)組的問題,卡了許久,我也沒有第一時(shí)間看出問題,現(xiàn)在把問題梳理一下,并給出解決方案,需要的朋友可以參考下2012-12-12