您好,登錄后才能下訂單哦!
C語(yǔ)言中常用的注釋風(fēng)格有兩種,一種是通過(guò)如下模式進(jìn)行一段代碼的注釋?zhuān)?/p>
/* comment*/
另一種是單行注釋符號(hào):
// comment
學(xué)生時(shí)代的注釋我一般是選用后者,那時(shí)候編碼量十分有限,即使是簡(jiǎn)單的小段落注釋使用的IDE也支持批量添加單行注釋符。而在編碼之中,簡(jiǎn)單的單行注釋進(jìn)行注釋的時(shí)候鍵盤(pán)的操作更為簡(jiǎn)單一點(diǎn)。
不過(guò),工作之后接觸了相應(yīng)的編碼規(guī)范之后,C語(yǔ)言的注釋我基本上放棄了單行注釋的方法,最多僅僅在調(diào)試的時(shí)候做簡(jiǎn)單的使用。
其實(shí),單行注釋是從C++中借鑒來(lái)的,算是C++風(fēng)格的注釋方式。而這種方式在C語(yǔ)言中有時(shí)候會(huì)帶來(lái)一定的差異性,甚至是引入難以察覺(jué)的Bug。把我自己從網(wǎng)絡(luò)或者書(shū)籍中看到的兩個(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_編程語(yǔ)言\01_C語(yǔ)言\exp_26>gcc exp_26.c
E:\WorkSpace\01_編程語(yǔ)言\01_C語(yǔ)言\exp_26>a
value of a: 123
代碼其實(shí)很簡(jiǎn)單,第一次對(duì)a進(jìn)行的數(shù)值修改其實(shí)是一個(gè)沒(méi)用的冗余代碼。如果發(fā)現(xiàn)類(lèi)似的問(wè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_編程語(yǔ)言\01_C語(yǔ)言\exp_26>gcc exp_26.c
E:\WorkSpace\01_編程語(yǔ)言\01_C語(yǔ)言\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)的判斷給出提示,比如說(shuō)我最近在使用的VIM就能夠通過(guò)顏色的變化提示出第二行也被注釋掉了。而擅長(zhǎng)語(yǔ)義分析的Source Insight在這方面倒是沒(méi)有做好,不知道最新推出的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專(zhuān)家編程》中摘出了這個(gè)例子,按照書(shū)中的介紹,c的賦值運(yùn)算相關(guān)3行在C語(yǔ)言中表示a/b而在C++中表示a。不過(guò),或許是成書(shū)時(shí)間比較早,自我我的機(jī)器以及軟件上,這個(gè)說(shuō)法顯然是不成立了。即使是咋C語(yǔ)言中,上面的表達(dá)式也是表示c = a。不過(guò),程序的可讀性確實(shí)是給了我們一個(gè)不小的挑戰(zhàn)。我專(zhuān)門(mén)注意了一下編輯器對(duì)此的識(shí)別,在此環(huán)節(jié)中,VIM以及Source Insight全都識(shí)別準(zhǔn)確。值得一提的是,前面的這兩個(gè)例子如果使用NotePad ++,編輯器的提示也全都是準(zhǔn)確的。
代碼的編譯執(zhí)行結(jié)果如下:
E:\WorkSpace\01_編程語(yǔ)言\01_C語(yǔ)言\exp_27>gcc exp_27.c
E:\WorkSpace\01_編程語(yǔ)言\01_C語(yǔ)言\exp_27>a
value of c:123
由此看來(lái),很多嵌入式的編碼規(guī)范中要求不能夠用C++單行注釋風(fēng)格的注釋方式還是有一定道理的。雖說(shuō)是帶來(lái)了一定的不方便,但是確實(shí)是能夠避免一些小問(wèn)題的出現(xiàn)。
以上這篇淺談C語(yǔ)言中的注釋風(fēng)格小結(jié)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。