====== 注释(Comment) ======
C有两种注释方法:
- 传统的方式,即从/*开始,到*/的第一次出现结束。
- C99开始引入第二种方式,即从%%//%%开始,到本行末尾(不包括行结束符)。这种新的注释方式可能会导致旧代码出现兼容问题,不是很建议使用。
在字符串和字符常量以及其他注释里的注释不被识别。如下面的代码中不含注释:
printf("%d //squared// is %d\n", i, i * i);
注释在预处理(Preprocessing)之前就删除了,所以在注释里的预处理命令不会被识别。
标准C规定,编译时整个注释被替换为**一个空格**字符(Space)。因而,注释也算[[.:whitespace|空白字符(Whitespace)]]的一种。
根据上述的替换规则,注释中间的行结束符不会中断预处理命令。比如,下面两条指令是等价的:
#define ten (2 * 5)
#define ten /* ten
one greater than nine
*/ (2 * 5)
有些非标准的实现允许使用嵌套的注释,即/*...*/之间还可以有/*和*/,只要配对就行,这种不标准的做法不应该使用。出现此类嵌套的场合,多半是为了注释掉一块代码,而代码中间之前已经存在注释了。要达到这个目的,合理的做法是使用预处理命令而不是注释。如:
#if 0
int page_queue_congested(struct page *page)
{
... ...
/* It pins the swap_info_struct */
... ...
#endif
{{tag>C语言}}