• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C++注釋(轉(zhuǎn))

               C90只有一種注釋風(fēng)格,就是使用“/*”和“*/”。早在預(yù)處理階段,C預(yù)處理器就會剔除所有出現(xiàn)在“/*”和“*/”之間的內(nèi)容(包括這對記號本身),所以在接下來傳送到C編譯器的代碼文件里是不會出現(xiàn)任何注釋內(nèi)容的。
               但這么簡單的注釋風(fēng)格有時也會令人頭疼。例如,你可能想,什么是注釋呢?注釋就是寫什么東西都無所謂,反正編譯器不會看到這些東西。很不幸,C預(yù)處理器一般都不支持嵌套注釋,如果你這樣寫:

                   /*something /* something else */*/

                   是行不通的。因為預(yù)處理器在碰到第一個“*/”時就認(rèn)為注釋已經(jīng)結(jié)束!于是它把到這里為止的注釋移除,可想而知,結(jié)果留下孤零零一個“*/”—編譯程序又報錯了。

                   這樣的處理常常令我們很不舒服,例如有時我們調(diào)試代碼,需要把連續(xù)幾行代碼注釋掉觀察結(jié)果,做法自然是這樣寫:

                   語句1;

                          語句2;

                          /*

                                 語句3;

                          */

                          語句4;

                   語句5;

                   但隨著調(diào)試的深入,可能我們想連語句2、語句4都注釋掉:

                   語句1;

                   /*

                          語句2;

                          /*

                                 語句3;

                          */

                          語句4;

                   */

                   語句5;

                   多加一對注釋不就解決了?

                   --中招了。看,你用了嵌套注釋。

                   為了解決這個問題,C++引入另一種風(fēng)格的注釋:使用“//”。預(yù)處理器會刪除從“//”開始到后面碰到的第一個換行符之間的所有內(nèi)容。這樣就沒有嵌套注釋的問題了,只不過書寫有點繁瑣,例如:

                   語句1;

                   //語句2;

                   //語句3;

                   //語句4;

                   語句5;

                   你喜歡注釋哪一行都可以,隨時可以撤消注釋,干脆利落,絕對沒有副作用,當(dāng)然,前提是你一行只寫一個語句。

                   資深程序員一般都更樂意使用C++風(fēng)格的注釋,我也如此建議。不過,你會問,C預(yù)處理器可不認(rèn)識“//”啊?

                   其實多數(shù)C預(yù)處理器都“暗中”支持“//”,除非你使用“嚴(yán)格符合C90”之類的編譯選項,否則C預(yù)處理器是不會阻撓你的。

                   而且,有個好消息:

                   C99已經(jīng)正式采納C++的注釋風(fēng)格,在今后,你可以光明正大的使用“//”。當(dāng)然,原來的老風(fēng)格仍然可以繼續(xù)使用。

                   不過,大家最好不要“一只腳踏兩只船”,像這樣就不好:

                   // /* 語句1;

                   語句2;

                   */

                   語句3;

                   原先用“/*”和“*/”注釋掉語句1和語句2,現(xiàn)在不小心又加上“//”,出錯了。因為預(yù)處理器一看見“//”就不管三七二十一把“///* 語句1;”全部刪除掉,結(jié)果又留下一個“*/”沒有處理。

                   結(jié)束本節(jié)之前,再討論一個有趣的問題。

                   有些敏感的讀者已經(jīng)坐不住了:那萬一我想在字符串里包含“//”之類的注釋符怎么辦?譬如我要在屏幕上顯示這么一行:

                   we have a // in this line.

                   能夠這樣寫嗎:

                   printf(“we have a // in this line.\n”);

                   答案是可以的,只要記住三條原則:

                   #1 字符串里面的注釋符不起注釋作用;

                   #2 注釋符里的雙引號不起標(biāo)識字符串的作用;

                   #3 如果情況混亂則從頭找起。

                   例如:

                   printf(“we have /* and */ here.”);

                   則根據(jù)原則#1,最后打印出來的字符串不會缺少“/* and */”這部分。

                   // “This line is a comment.”

                   由原則#2,可以肯定這一行會被注釋掉。

                   /* “ */ “ */

                   你可能這樣想,第一個“*/”在雙引號里面,噢,它不起注釋作用,所以這一行被完全注釋掉。

                   不是的。在這么“惡劣”的環(huán)境下,我們要找出最先出現(xiàn)的符號是注釋符還是雙引號,在這個例子里,注釋符最先帶頭,所以根據(jù)原則#2,雙引號不起任何作用,當(dāng)預(yù)處理器碰到第一個“*/”時就認(rèn)為注釋結(jié)束,預(yù)處理的結(jié)果是上面這一行語句最后剩下:

                   “ */

                   另:

                   其實C/C++程序員可以使用預(yù)處理指令實現(xiàn)嵌套注釋:

                   語句1;

                          #if 0

                                 語句2;

                                        #if 0

                                               語句3;

                                        #endif

                                 語句4;

                          #endif

                   語句5;

                   因為預(yù)處理器在分析預(yù)處理指令時不僅進(jìn)行詞法分析,還進(jìn)行語法分析,這就比使用“/*”和“*/”高級,后者僅僅涉及詞法分析。

            http://blog.chinaunix.net/u/6776/showart_137988.html

            posted on 2008-10-02 19:54 wangwei 閱讀(4090) 評論(1)  編輯 收藏 引用

            評論

            # re: C++注釋(轉(zhuǎn)) 2012-01-31 14:24 木頭

            謝謝!說得真詳細(xì)。  回復(fù)  更多評論   


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2008年9月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011

            導(dǎo)航

            統(tǒng)計

            常用鏈接

            留言簿(2)

            隨筆分類

            隨筆檔案

            文章檔案

            收藏夾

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            伊人 久久 精品| 久久国产乱子精品免费女| 伊人久久大香线蕉成人| 精品久久久中文字幕人妻| 久久精品a亚洲国产v高清不卡| 国产 亚洲 欧美 另类 久久| 国产精品99久久精品爆乳| 久久精品国产亚洲AV香蕉| 国产麻豆精品久久一二三| 欧美日韩精品久久久久| 久久久久亚洲AV成人片| 久久婷婷五月综合色奶水99啪| 久久91精品国产91久久麻豆| 久久国产免费直播| 午夜福利91久久福利| 久久精品一区二区| 色狠狠久久AV五月综合| 日日狠狠久久偷偷色综合免费| 成人午夜精品久久久久久久小说| 亚洲女久久久噜噜噜熟女| 亚洲精品乱码久久久久久蜜桃 | 九九精品99久久久香蕉| 狠狠色丁香久久婷婷综合图片| 国产精品久久久久9999| 无码日韩人妻精品久久蜜桃 | 亚洲国产成人精品女人久久久| 青青青青久久精品国产h| 精品国际久久久久999波多野| 亚洲色欲久久久综合网| 伊人热热久久原色播放www| 国产精品免费久久| 国产日韩久久免费影院| 国产激情久久久久影院老熟女免费| 久久99国内精品自在现线| 久久九九精品99国产精品| 久久精品国产亚洲av麻豆小说| 久久久一本精品99久久精品88| 久久精品国产网红主播| 久久不见久久见免费视频7| 久久天天躁狠狠躁夜夜躁2O2O| 国产精品一区二区久久国产|