购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 注释

我们的pun.c程序仍然缺乏某些重要内容:文档说明。每一个程序都应该包含识别信息,即程序名、编写日期、作者、程序的用途以及其他相关信息。C语言把这类信息放在 注释 (comment)中。符号 /* 标记注释的开始,符号 */ 标记注释的结束。例如:

/* This is a comment */

注释几乎可以出现在程序的任何位置上。它既可以独占一行,也可以和其他程序文本出现在同一行中。下面展示的程序pun.c就把注释加在了程序开始的地方:

/* Name: pun.c                 */
/* Purpose: Prints a bad pun.  */
/* Author: K. N. King          */

#include <stdio.h>

int main(void)
{
  printf("To C, or not to C: that is the question.\n");
  return 0;
}

注释还可以占用多行。如果遇到符号 /* ,那么编译器读入(并且忽略)随后的内容直到遇到符号 */ 为止。如果愿意,还可以把一串短注释合并成为一条长注释:

/* Name: pun.c
   Purpose: Prints a bad pun.
   Author: K. N. King */

但是,上面这样的注释可能难以阅读,因为人们阅读程序时可能不易发现注释的结束位置。因此,单独把 */ 符号放在一行会很有帮助:

/* Name: pun.c
   Purpose: Prints a bad pun.
   Author: K. N. King
*/

更好的方法是用一个“盒形”格式把注释单独标记出来:

/**********************************************************
 * Name: pun.c                                            *
 * Purpose: Prints a bad pun.                             *
 * Author: K. N. King                                     *
 **********************************************************/

有些程序员通过忽略3条边框的方法来简化盒形注释:

/*
 * Name: pun.c
 * Purpose: Prints a bad pun.
 * Author: K. N. King
 */

简短的注释还可以与程序中的其他代码放在同一行:

int main(void)   /* Beginning of main program */

这类注释有时也称作“翼型注释”。

如果忘记终止注释,则可能会导致编译器忽略程序的一部分。请思考一下下面的示例:

    printf("My ");      /* forgot to close this comment...
printf("car ");
printf("has ");     /* so it ends here */
printf("fleas");
  

因为在第一条注释中遗漏了结束标志,所以编译器忽略了中间的两条语句,因此程序最终只打印了 My fleas

C99提供了另一种类型的注释,以 // (两个相邻的斜杠)开始:

// This is a comment

这种风格的注释会在行末自动终止。如果要创建多于一行的注释,既可以使用以前的注释风格( /* ... */ ),也可以在每一行的前面加上 //

// Name: pun.c
// Purpose: Prints a bad pun.
// Author: K. N. King

新的注释风格有两个主要优点:首先,因为注释会在行末自动终止,所以不会出现未终止的注释意外吞噬部分程序的情况;其次,因为每行注释前面都必须有 // ,所以多行注释看上去更加醒目。 oAFRQPQUra6ND0H7J3+9Dy+HUPlZ2k1NqLcToW1Q0x9vX37hdImRIvoPxQHqBJNk

点击中间区域
呼出菜单
上一章
目录
下一章
×