淺談C語言中的注釋風格小結(jié)
C語言中常用的注釋風格有兩種,一種是通過如下模式進行一段代碼的注釋:
/* comment*/
另一種是單行注釋符號:
// comment
學生時代的注釋我一般是選用后者,那時候編碼量十分有限,即使是簡單的小段落注釋使用的IDE也支持批量添加單行注釋符。而在編碼之中,簡單的單行注釋進行注釋的時候鍵盤的操作更為簡單一點。
不過,工作之后接觸了相應的編碼規(guī)范之后,C語言的注釋我基本上放棄了單行注釋的方法,最多僅僅在調(diào)試的時候做簡單的使用。
其實,單行注釋是從C++中借鑒來的,算是C++風格的注釋方式。而這種方式在C語言中有時候會帶來一定的差異性,甚至是引入難以察覺的Bug。把我自己從網(wǎng)絡或者書籍中看到的兩個比較典型的方式列述總結(jié)一下。
示例1:
#include"stdio.h" int main(void) { int a = 0; a += 5; \ a = 123; printf("value of a: %d\n",a); return 0; }
代碼的編譯運行結(jié)果如下:
E:\WorkSpace\01_編程語言\01_C語言\exp_26>gcc exp_26.c
E:\WorkSpace\01_編程語言\01_C語言\exp_26>a
value of a: 123
代碼其實很簡單,第一次對a進行的數(shù)值修改其實是一個沒用的冗余代碼。如果發(fā)現(xiàn)類似的問題,可能進行一下簡單的屏蔽,修改代碼如下:
#include"stdio.h" int main(void) { int a = 0; //a += 5; \ a = 123; printf("value of a: %d\n",a); return 0; }
代碼的編譯運行結(jié)果如下:
E:\WorkSpace\01_編程語言\01_C語言\exp_26>gcc exp_26.c
E:\WorkSpace\01_編程語言\01_C語言\exp_26>a
value of a: 0
這個結(jié)果很多時候會出乎很多人的意料,因為發(fā)現(xiàn)結(jié)果居然不再是123!其實,原因就在于屏蔽的那一行代碼最后面多了一個續(xù)行的符號。這樣使得注釋的作用持續(xù)到了下一行。其實,很多編譯器在這方面都會有相對精準的判斷給出提示,比如說我最近在使用的VIM就能夠通過顏色的變化提示出第二行也被注釋掉了。而擅長語義分析的Source Insight在這方面倒是沒有做好,不知道最新推出的V4版本中是否對此有所改進。
示例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專家編程》中摘出了這個例子,按照書中的介紹,c的賦值運算相關(guān)3行在C語言中表示a/b而在C++中表示a。不過,或許是成書時間比較早,自我我的機器以及軟件上,這個說法顯然是不成立了。即使是咋C語言中,上面的表達式也是表示c = a。不過,程序的可讀性確實是給了我們一個不小的挑戰(zhàn)。我專門注意了一下編輯器對此的識別,在此環(huán)節(jié)中,VIM以及Source Insight全都識別準確。值得一提的是,前面的這兩個例子如果使用NotePad ++,編輯器的提示也全都是準確的。
代碼的編譯執(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++單行注釋風格的注釋方式還是有一定道理的。雖說是帶來了一定的不方便,但是確實是能夠避免一些小問題的出現(xiàn)。
以上這篇淺談C語言中的注釋風格小結(jié)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持我們。
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對數(shù)怎么表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10delphi制作wav文件的方法
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10C#中split用法實例總結(jié)
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 04-02jquery與jsp,用jquery
- 01-11ajax實現(xiàn)頁面的局部加載