淺談C語(yǔ)言中的注釋風(fēng)格小結(jié)
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è)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解析OpenSSL1.1.1?centos7安裝編譯aes的c++調(diào)用
這篇文章主要介紹了OpenSSL1.1.1?centos7安裝編譯aes的c++調(diào)用,實(shí)現(xiàn)方法也很簡(jiǎn)單,主要是在該文檔內(nèi)加入openssl的lib路徑,感興趣的朋友跟隨小編一起看看吧2022-03-03
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的通訊錄管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
淺析C++中dynamic_cast和static_cast實(shí)例語(yǔ)法詳解
這篇文章主要介紹了淺析C++中dynamic_cast和static_cast實(shí)例演示,包括static_cast語(yǔ)法知識(shí)和static_cast的作用講解,namic_cast 語(yǔ)法詳解,需要的朋友可以參考下2021-07-07
C/C++并查集的查詢(xún)與合并實(shí)現(xiàn)原理
這篇文章主要介紹了C/C++并查集的查詢(xún)與合并,并查集是一種用來(lái)管理元素分組情況的數(shù)據(jù)結(jié)構(gòu)。并查集可以高效地進(jìn)行如下操作2023-02-02
C語(yǔ)言詳細(xì)分析講解內(nèi)存管理malloc realloc free calloc函數(shù)的使用
C語(yǔ)言?xún)?nèi)存管理相關(guān)的函數(shù)主要有realloc、calloc、malloc、free等,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言?xún)?nèi)存管理realloc、calloc、malloc、free函數(shù)的相關(guān)資料,需要的朋友可以參考下2022-05-05
C語(yǔ)言實(shí)現(xiàn)BST二叉排序樹(shù)的基本操作
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)BST二叉排序樹(shù)的基本操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09

