C 语言中的注释

目录汇总:C 语言入门教程:面向萌新小白的零基础入门教程

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

1
/* This is a comment */

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
/* 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 ;
}

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

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

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

1
2
3
4
/* Name: pun.c
   Purpose: Prints a bad pun.
   Author: K. N. King
*/

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

1
2
3
4
5
/**********************************************************
 * Name: pun.c                                            *
 * Purpose: Prints a bad pun.                             *
 * Author: K. N. King                                     *
 **********************************************************/

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

1
2
3
4
5
/*
 * Name: pun.c
 * Purpose: Prints a bad pun.
 * Author: K. N. King
 */

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

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

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

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

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

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

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

1
// This is a comment

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

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

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

(完)

comments powered by Disqus