#if 0 ... #endif的真实用途

转载 2015年11月20日 09:27:49

iOS添加注释的方法:

1.最常用的"//"

2.多行注释"/**/"

3.当代码内嵌时会出现很多问题比如代码有"*/"会影响判断,这里会用到快捷键"comand + /",多行注释最常用的方法]

4.有时候还会用到#if 0...#endif 有时候可以配合else使用


以下内容转载自:http://blog.csdn.net/raining_heart/article/details/8019535

感谢作者

在过去都没有去理会#if 的作用,今天突发奇想,开启编译器试一试。

很多人都知道,#if  0  ...   #endfif的作用跟/*...*/的作用是一样的,就是注释,可是注释为什么不用注释符号/*就行了么?google了一下,大家都说是为了解决嵌套注释。如:

/*--------------------------------------------------------------------*/

#include“stdio.h”

int main()

{

            int  a=11;

/*这是一个外层注释

        /*

            int *b=&a;                     //这是一个内层代码注释

            *b = 10;

       */

             a++;

*/

}

/*----------------------------------------------------------------------*/

上面的程序编译后发现缺少了一个注释符号,因为注释符头 " / *  "是根据最近结束符 " */  "来判断注释的区域的,但是一但内嵌了就会发现错误。所以人们就使用了#if 0,如下:

/*--------------------------------------------------------------------*/

#include“stdio.h”

int main()

{

             int  a=11;

/*这是一个外层注释

#if  0    

             int *b=&a;                     //这是一个内层代码注释

             *b = 10;

#endif

              a++;

*/

}

/*----------------------------------------------------------------------*/

但是,#if就只有这个作用吗?有些书籍呼吁人们尽量少用它,那不是没有什么意义了?

其实不是的,在有些地方很常见到它,而且少不了它。当你见识过系统级的源代码就焕然大悟了。对,就是用于系统裁剪。

系统裁剪是针对系统的用途,对系统的源代码进行一下优化,减少不必要的功能。

#if是一个最经典的例子。如:

/*--------------------------------------------------------------------*/

#include“stdio.h”

#define TEST_2    1

int main()

{

            int  a=11;

/*这是一个外层注释

#if  TEST_2  

             int *b=&a;                     

             *b = 10;

#endif

              a++;

*/

}

/*----------------------------------------------------------------------*/

如上面的例子,对于某些功能不需要,我们只需对于的功能TEST_2的宏定义改成0,然后重新编译就行了。当然一般宏定义是放在一个特定的文件(这里为了简单就写在一起),这样外面的人只需要更改那个文件所对应的值就行对系统进行裁剪而不需要关心具体代码,就行实现裁剪。

条件编译解决/**/注释嵌套的问题(#if 0 #endif) (哈哈,写的很搞笑啊~转载的)

(hplonline)2010.12.25 《C陷阱与缺陷》里面有一个例子,ex1-2,谈到了注释嵌套的问题。 不过这个excercise讲的只是怎么通过写一段代码来检验编译器,并没有给出解决...

#if 0 ....#endif的作用

“#if 0/#if 1 ... #endif”的作用 (源自:http://www.cnblogs.com/MichaelOwen/articles/2128733.html) 1. ...
  • jw903
  • jw903
  • 2015年07月29日 22:58
  • 382

1、打印二进制机器码,程序内存分析,大端序小端序,指针数组,数组指针,数组的三种访问方式,typedef,#if-0-#endif,求数组大小,括号表达式

 1.打印二进制机器码(分别表示32位的和64位的) #include   /*按照8位的长度打印一个数值*/ void dis8bit(char val) ...

#if 0/#if 1 ... #endif”的作用

今看到一帖子,讨论“#if 0/#if 1 ... #endif”的作用,感觉不错,故拿来分享。 原帖地址:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_...

“#if 0/#if 1 ... #endif”的作用

今看到一帖子,讨论“#if 0/#if 1 ... #endif”的作用,感觉不错,故拿来分享。 原帖地址:http://www.ourdev.cn/bbs/bbs_content.jsp?bb...

#if,#endif,!defined的意义和用法

  • 2012年05月10日 12:00
  • 20KB
  • 下载

Objective--C语言预处理命令之条件编译(#ifdef,#else,#endif,#if等)

预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。 在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义...

预处理命令之条件编译(#ifdef,#else,#endif,#if等)

 预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。 在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、...
  • Pattonr
  • Pattonr
  • 2014年01月16日 13:39
  • 320

#if, #elif, #else, and #endif Directives (C/C++)

#if, #elif, #else, and #endif Directives (C/C++) Visual Studio 2010 Other Versions     * Visu...

VC 编译连接(#if #ifdef #ifndef #else #endif defened)

一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:#if 0 ... #endif的真实用途
举报原因:
原因补充:

(最多只允许输入30个字)