C++ 注釋的不正確嵌套

用以下程序舉例:

#include <iostream>
/*
* 注釋對 /* */ 不能嵌套
* 否則后面的字會被認為是源碼,像剩余程序一樣處理
*/

int main() {
    return 0;
}

命名為 exa.cpp,然后編譯這個程序。

# g++ exa.cpp
exa.cpp:4:17: error: stray ‘\344’ in program
 * 注釋對/* */不能嵌套
                 ^
exa.cpp:4:17: error: stray ‘\270’ in program
exa.cpp:4:17: error: stray ‘\215’ in program
exa.cpp:4:17: error: stray ‘\350’ in program
exa.cpp:4:17: error: stray ‘\203’ in program
exa.cpp:4:17: error: stray ‘\275’ in program
exa.cpp:4:17: error: stray ‘\345’ in program
exa.cpp:4:17: error: stray ‘\265’ in program
exa.cpp:4:17: error: stray ‘\214’ in program
exa.cpp:4:17: error: stray ‘\345’ in program
exa.cpp:4:17: error: stray ‘\245’ in program
exa.cpp:4:17: error: stray ‘\227’ in program
exa.cpp:5:1: error: stray ‘\342’ in program
 * “不能嵌套”幾個字會被認為是源碼,像剩余程序一樣處理
 ^
exa.cpp:5:1: error: stray ‘\200’ in program
exa.cpp:5:1: error: stray ‘\234’ in program
exa.cpp:5:1: error: stray ‘\344’ in program
exa.cpp:5:1: error: stray ‘\270’ in program
exa.cpp:5:1: error: stray ‘\215’ in program
exa.cpp:5:1: error: stray ‘\350’ in program
exa.cpp:5:1: error: stray ‘\203’ in program
exa.cpp:5:1: error: stray ‘\275’ in program
exa.cpp:5:1: error: stray ‘\345’ in program
exa.cpp:5:1: error: stray ‘\265’ in program
exa.cpp:5:1: error: stray ‘\214’ in program
exa.cpp:5:1: error: stray ‘\345’ in program
exa.cpp:5:1: error: stray ‘\245’ in program
exa.cpp:5:1: error: stray ‘\227’ in program
exa.cpp:5:1: error: stray ‘\342’ in program
exa.cpp:5:1: error: stray ‘\200’ in program
exa.cpp:5:1: error: stray ‘\235’ in program
exa.cpp:5:1: error: stray ‘\345’ in program
exa.cpp:5:1: error: stray ‘\207’ in program
exa.cpp:5:1: error: stray ‘\240’ in program
exa.cpp:5:1: error: stray ‘\344’ in program
exa.cpp:5:1: error: stray ‘\270’ in program
exa.cpp:5:1: error: stray ‘\252’ in program
exa.cpp:5:1: error: stray ‘\345’ in program
exa.cpp:5:1: error: stray ‘\255’ in program
exa.cpp:5:1: error: stray ‘\227’ in program
exa.cpp:5:1: error: stray ‘\344’ in program
exa.cpp:5:1: error: stray ‘\274’ in program
exa.cpp:5:1: error: stray ‘\232’ in program
exa.cpp:5:1: error: stray ‘\350’ in program
exa.cpp:5:1: error: stray ‘\242’ in program
exa.cpp:5:1: error: stray ‘\253’ in program
exa.cpp:5:1: error: stray ‘\350’ in program
exa.cpp:5:1: error: stray ‘\256’ in program
exa.cpp:5:1: error: stray ‘\244’ in program
exa.cpp:5:1: error: stray ‘\344’ in program
exa.cpp:5:1: error: stray ‘\270’ in program
exa.cpp:5:1: error: stray ‘\272’ in program
exa.cpp:5:1: error: stray ‘\346’ in program
exa.cpp:5:1: error: stray ‘\230’ in program
exa.cpp:5:1: error: stray ‘\257’ in program
exa.cpp:5:1: error: stray ‘\346’ in program
exa.cpp:5:1: error: stray ‘\272’ in program
exa.cpp:5:1: error: stray ‘\220’ in program
exa.cpp:5:1: error: stray ‘\347’ in program
exa.cpp:5:1: error: stray ‘\240’ in program
exa.cpp:5:1: error: stray ‘\201’ in program
exa.cpp:5:1: error: stray ‘\357’ in program
exa.cpp:5:1: error: stray ‘\274’ in program
exa.cpp:5:1: error: stray ‘\214’ in program
exa.cpp:5:1: error: stray ‘\345’ in program
exa.cpp:5:1: error: stray ‘\203’ in program
exa.cpp:5:1: error: stray ‘\217’ in program
exa.cpp:5:1: error: stray ‘\345’ in program
exa.cpp:5:1: error: stray ‘\211’ in program
exa.cpp:5:1: error: stray ‘\251’ in program
exa.cpp:5:1: error: stray ‘\344’ in program
exa.cpp:5:1: error: stray ‘\275’ in program
exa.cpp:5:1: error: stray ‘\231’ in program
exa.cpp:5:1: error: stray ‘\347’ in program
exa.cpp:5:1: error: stray ‘\250’ in program
exa.cpp:5:1: error: stray ‘\213’ in program
exa.cpp:5:1: error: stray ‘\345’ in program
exa.cpp:5:1: error: stray ‘\272’ in program
exa.cpp:5:1: error: stray ‘\217’ in program
exa.cpp:5:1: error: stray ‘\344’ in program
exa.cpp:5:1: error: stray ‘\270’ in program
exa.cpp:5:1: error: stray ‘\200’ in program
exa.cpp:5:1: error: stray ‘\346’ in program
exa.cpp:5:1: error: stray ‘\240’ in program
exa.cpp:5:1: error: stray ‘\267’ in program
exa.cpp:5:1: error: stray ‘\345’ in program
exa.cpp:5:1: error: stray ‘\244’ in program
exa.cpp:5:1: error: stray ‘\204’ in program
exa.cpp:5:1: error: stray ‘\347’ in program
exa.cpp:5:1: error: stray ‘\220’ in program
exa.cpp:5:1: error: stray ‘\206’ in program
exa.cpp:6:2: error: expected unqualified-id before ‘/’ token
 */
  ^
exa.cpp:6:2: error: expected constructor, destructor, or type conversion before ‘/’ token

輸出的報錯...

如果不是已經(jīng)知道了問題才看到報錯,而是要從報錯反推問題,實在會讓人束手無策。

究其原因就是注釋對 “/* */” 不可嵌套,“/*” 總會與后文遇到的第一個 “*/” 組成一對,“*/” 總會與前文最近的 “/*” 組成一對。

當然這是指每行都不存在分號的情況下,如果有分號,這一行不論遇到了什么都結(jié)束了。

幾個例子:

cout << "/*";                  // 輸出“/*”
cout << "*/";                  // 輸出“*/”
cout << /* "*/" /* "/*" */;    // 輸出“ /* ”




PS. 今天收到了簡書送來的禮物,是一本宋詞書,haha。那么以后只要有 idea 我就來更一波~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容