亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

淺談C語言中的注釋風格小結

發布時間:2020-08-25 10:01:47 來源:腳本之家 閱讀:136 作者:grey_csdn 欄目:編程語言

C語言中常用的注釋風格有兩種,一種是通過如下模式進行一段代碼的注釋:

/* comment*/

另一種是單行注釋符號:

// comment

學生時代的注釋我一般是選用后者,那時候編碼量十分有限,即使是簡單的小段落注釋使用的IDE也支持批量添加單行注釋符。而在編碼之中,簡單的單行注釋進行注釋的時候鍵盤的操作更為簡單一點。

不過,工作之后接觸了相應的編碼規范之后,C語言的注釋我基本上放棄了單行注釋的方法,最多僅僅在調試的時候做簡單的使用。

其實,單行注釋是從C++中借鑒來的,算是C++風格的注釋方式。而這種方式在C語言中有時候會帶來一定的差異性,甚至是引入難以察覺的Bug。把我自己從網絡或者書籍中看到的兩個比較典型的方式列述總結一下。

示例1:

#include"stdio.h"
 
int main(void)
{
    int a = 0;
 
    a += 5; \
    a = 123;
 
    printf("value of a: %d\n",a);
 
    return 0;
}

代碼的編譯運行結果如下:

E:\WorkSpace\01_編程語言\01_C語言\exp_26>gcc exp_26.c

E:\WorkSpace\01_編程語言\01_C語言\exp_26>a

value of a: 123

代碼其實很簡單,第一次對a進行的數值修改其實是一個沒用的冗余代碼。如果發現類似的問題,可能進行一下簡單的屏蔽,修改代碼如下:

#include"stdio.h"
 
int main(void)
{
    int a = 0;
 
    //a += 5; \
    a = 123;
 
    printf("value of a: %d\n",a);
 
    return 0;
}

代碼的編譯運行結果如下:

E:\WorkSpace\01_編程語言\01_C語言\exp_26>gcc exp_26.c

E:\WorkSpace\01_編程語言\01_C語言\exp_26>a

value of a: 0

這個結果很多時候會出乎很多人的意料,因為發現結果居然不再是123!其實,原因就在于屏蔽的那一行代碼最后面多了一個續行的符號。這樣使得注釋的作用持續到了下一行。其實,很多編譯器在這方面都會有相對精準的判斷給出提示,比如說我最近在使用的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的賦值運算相關3行在C語言中表示a/b而在C++中表示a。不過,或許是成書時間比較早,自我我的機器以及軟件上,這個說法顯然是不成立了。即使是咋C語言中,上面的表達式也是表示c = a。不過,程序的可讀性確實是給了我們一個不小的挑戰。我專門注意了一下編輯器對此的識別,在此環節中,VIM以及Source Insight全都識別準確。值得一提的是,前面的這兩個例子如果使用NotePad ++,編輯器的提示也全都是準確的。

代碼的編譯執行結果如下:

E:\WorkSpace\01_編程語言\01_C語言\exp_27>gcc exp_27.c

E:\WorkSpace\01_編程語言\01_C語言\exp_27>a

value of c:123

由此看來,很多嵌入式的編碼規范中要求不能夠用C++單行注釋風格的注釋方式還是有一定道理的。雖說是帶來了一定的不方便,但是確實是能夠避免一些小問題的出現。

以上這篇淺談C語言中的注釋風格小結就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桦南县| 兰西县| 肥乡县| 富源县| 郸城县| 龙陵县| 河东区| 孟村| 阿鲁科尔沁旗| 通化市| 广灵县| 牡丹江市| 泗水县| 广东省| 乌鲁木齐县| 蒙城县| 铅山县| 崇义县| 四平市| 石林| 宾川县| 城步| 分宜县| 隆林| 克什克腾旗| 平武县| 榆社县| 玉溪市| 曲麻莱县| 金寨县| 宜丰县| 砚山县| 吉木萨尔县| 万山特区| 哈密市| 盘锦市| 永兴县| 平陆县| 塔河县| 甘德县| 抚顺县|