C语言中可能忽略的“注释”

        在C语言的编写过程中为了能让其他人能看懂我们所写的代码添加必要的注释就显得尤为重要,于代码相比注释虽然在编译时会被编译器剔除不予执行,但书写不当的注释总会给我们带来一些令人头痛的Bug。

        在C语言环境中支持的注释风格有两种:

         1.以 //  开始的单行注释,允许嵌套 

         2.以 /* 为开始  */为结束的块式注释,不能嵌套。

注释时应当注意的问题:

     1.“戴着脚镣的舞者”

          注释虽然可以在代码中灵活地运用但却并非可以出现在C 语言代码的任何地方。

          编译器在编译时会将注释剔除,但不是简单的剔除,而是用空格代替原来的注释。

     eg:  in/*…*/t i;    的代码在编译时用空格代替了注释段,那么这句话在编译器就会变成 "in t i;"关键字被改变,程序报错。


     2.“远亲不如近邻”

          “/*.....*/”这种注释方式按规定是不能发生嵌套的,/* 总是与离它最近的 */ 匹配。

    eg:/*/**/ "*/"    在不允许嵌套的情况下这行代码就等效于一个字符串"*/"


   3“有心栽花花不开

      只要斜杠(/)和星号(*)之间没有空格,都会被当作注释的开始。

     当我们要执行一句代码为 y = x/*p时,会意外的发现程序报错,实际上,编译器把/*当作是一段注释的开始,把/*后

面的内容都当作注释内容,直到出现*/为止。这个表达式其实只是表示把x 的值赋给y,/*后面的内容都当作注释。但是,

由于没有找到*/,所以提示出错。我们可以把上面的表达式修改一下:

   y = x/ *p   或者    y = x/(*p)   这样的话,表达式的意思就是x 除以p 指向的内存里的值,把结果赋值为y了。——引用《c语言深度解剖》


   4.当我们在编写代码时需要“注释掉”一大段的代码时,如果该段代码中已经存在方式二的注释情况,那么想注释掉这段代码就没那么容易了。

这时我们可以用#if指令从逻辑上删除一段c语言代码。

    #if  0

         something()

    #endif

#if 和 #endif条件编译命令,如果满足#if后面的条件,就编译#if和#endif之间的程序段,否则不编译。







猜你喜欢

转载自blog.csdn.net/erica_ou/article/details/52628824