今天顺手谈谈注释的问题。

对于一段代码或者一个大工程,如果说没有注释,写的程序只有自己懂得。假如有一天,你的工程或者你的代码给别人修改,没有相应的注释。这会使人奔溃,人家可能要花很长的时间来慢慢解读,这是大大浪费时间,时间就是金钱啊。所以一段代码或者一个工程,注释起很大的作用。不多说,直接开门见山。

第一种方法:(两个斜杆)/ /

相信大家接触都是以这种方式去注释,举个例子:

#include <stdio.h>
int main(void)
{

    printf("语句1\n");//注释
    printf("语句2\n");
//  printf("语句3\n");
    printf("语句4\n");

	return 0 ;
}

但是这种方式只能适用几行代码的注释,如果说面对100行、1000行等代码注释,那岂不是累死人。当你想注释一大串代码时,可能你会马上想到第二种方法。

第二种方法:()/ *  * /

比如说这样子:

#include <stdio.h>
int main(void)
{

    printf("语句1\n");
    printf("语句2\n");
    printf("语句3\n");
  /*
    printf("语句4\n");   
    printf("语句5\n");
    printf("语句6\n");
    printf("语句7\n");
  */  
    printf("语句8\n");   

	return 0 ;
}

这个确实很方便,但是问题来了,这个注释方式是不能嵌套的,可能自己的小程序小工程没有感觉,但是面对大工程来说,在你使用/ * * /时候,中间也有存在/ * * /这样 的注释,结果会引发一系列的错误。举个例子。

 

编译器不会那么只能,它只会寻找与离   / * 最近的 */去配对,它不管后面的如何如何。所以这也是它的缺点。

第三种方法:使用预处理形式    #if 0  #endif

对于一大串代码的注释,我个人比较推荐使用这个方式,因为这种方式可以避开上面的缺陷。用例子说话。

 

#if   0与#endif  之间的代码就会被注释掉。

所以我们可以根据第三种方法进行扩展学习

顺便介绍给大家:

在C语言中我们也会用到#if 0,#else,#endif 语句  或   # if 1,#else,#endif 语句

#include <stdio.h>

int main(void)
{

#if 1
    printf("语句1\n");
#else
    printf("语句2\n");
#endif

	return 0 ;
}

此时printf("语句2\n");的语句被注释掉了,永远没有办法执行,而printf("语句1\n");是被编译的;

如果将#if 1变为#if 0,printf("语句2\n");被编译,而printf("语句1\n");永远没有办法被执行。如下

#include <stdio.h>

int main(void)
{

#if 0
    printf("语句1\n");
#else
    printf("语句2\n");
#endif

	return 0 ;
}

========================================================================================================================================================================================================有天我在调试的发现,预处理也可以这样使用

例子1:

#include <stdio.h>

int main(void)
{

#if 1
    printf("语句1\n");
    #if 0
    printf("语句2\n");
    #endif

    #if 1
    printf("语句3\n");
    #endif

    #if 0
    printf("语句4\n");
    #endif

#endif

	return 0 ;
}

例子2:

#include <stdio.h>

int main(void)
{

#if 1
    printf("语句1\n");
    #if 0
    printf("语句2\n");
        #if 1
        printf("语句3\n");
            #if 1
            printf("语句4\n");
                 #if 1
                printf("语句n\n");
                #endif
            #endif
        #endif
    #endif
    #if 1
    printf("语句5\n");
    #endif

    #if 0
    printf("语句6\n");
    #endif
printf("语句7\n");


#endif

	return 0 ;
}

所以,每一 #if 0 或者#if 1  都是要有一个#endif 去匹配,少一个也不行,而且也是按照就近原则的方式去匹配。这类似于像嵌套,读者可以根据上面的例子去思考或者研究。

有不足之处,欢迎多多交流,欢迎评论。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐