在我們的程式變得更複雜之前,我們先看看C++是如何處理注釋的。注釋可以協助人們閱讀程式。在典型情況下,它們用於總結演算法、表明變數的目的或澄清其它一些模糊的程式碼片段。注釋不會增加可執行程式的大小。編譯器會忽略所有注釋。
在C++中有兩種類型的注釋:單行注釋和成對注釋。單行注釋以雙斜線(//)開頭。同一行中斜線右側的所有內容都是注釋,會被編譯器略過。
另一個分隔字元是注釋符號對(/* */),它繼承自C語言。這種注釋以/*開始,以*/結尾。編譯器把/*和*/之間的部分都作為注釋來處理:
#include <iostream>
/* 簡單的main函數: 讀入兩個數字並輸出結果 */
int main()
{
// 提示使用者輸入數字
std::cout << "Enter two numbers:" << std::endl;
int v1, v2; // 初始化了的
std::cin >> v1 >> v2; // 讀取輸入
return 0;
}
注釋符號對可以放置在允許輸入tab、空格或新行的任何地方。注釋符號對可以跨越程式的多個行,但是不是必須這樣做的。當注釋符號對沒有跨越多個行,通常表明內部行是多行注釋的一部分。我們的樣式是每行以星號開始,因此表明整個範圍都是多行注釋的部分。
典型情況下程式包含多種注釋形式。注釋符號對通常用做多行解釋,而雙斜線注釋傾向於半行或單行注釋。
程式中混合了太多的注釋可能使代碼混亂。通常在要解釋的代碼上方放置注釋。
隨著代碼的改變,注釋也應該保持更新。程式員希望注釋是精確的,並且很相信它們,即使其它形式的系統文檔到期了。不正確的注釋比沒有注釋還有糟糕,因為它會誤導隨後的閱讀者。
注釋符號對不能嵌套
以/*開始的注釋通常以*/結束。其結果是一個注釋符號對不能出現在另一個之中。這類程式錯誤導致的編譯器錯誤訊息可能難以理解。例如,在你的系統上編譯下面的程式:
#include <iostream>
/*
* 注釋符號對 /* */ 不能嵌套。
* "不能嵌套" 會被認為是原始碼的一部分
*/
int main()
{
return 0;
}
當你注釋一大段程式的時候,看起來把注釋符號對放在你希望臨時略過的部分是最容易的。問題是如果那段代碼已經有了注釋符號對,那麼新插入的注釋將過早地終止。臨時忽略一段代碼的更好的辦法是使用編輯器在希望忽略的代碼的每一行前面插入單行注釋。使用這種方法的時候,你就不必擔心自己注釋的代碼是否包含注釋符號對。