在我们的程序变得更复杂之前,我们先看看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;
}
当你注释一大段程序的时候,看起来把注释符号对放在你希望临时略过的部分是最容易的。问题是如果那段代码已经有了注释符号对,那么新插入的注释将过早地终止。临时忽略一段代码的更好的办法是使用编辑器在希望忽略的代码的每一行前面插入单行注释。使用这种方法的时候,你就不必担心自己注释的代码是否包含注释符号对。