#if 1...#endif

1.

“#if 0/#if 1 ... #endif”的作用,我们知道,C标准不提供C++里的“//”这样的单行风格注释而只提供“/* */”这样的块注释功能,我们通常使用它写代码中说明性的注释文字(注释作用)以及在调试时关闭某段代码对编译器的可见性(屏蔽作用),当然,这里所谓的“注释作用”和“屏蔽作用”是我们从功能上下的主观定义,对预处理器而言,两者并无任何区别。对于前者,因为“注释”中不会再出现“注释”和“需要屏蔽的代码段”,所以不会有嵌套的需求,所以通常不会有问题;而对于后者,当我们在调试程序时需要“屏蔽”某段代码时,该段代码中可能包含着前述的“注释”和/或“已被屏蔽的代码段”,这时就产生了“/* */”嵌套使用的需求,但C标准恰恰不允许我们这么干。当你试图使用嵌套的块注释功能时,会发现预处理器把最外层注释的开始和最内层注释的结尾这两者之间的内容处理成了注释,而其后一直到最外层注释结尾的内容被当作了“有效代码”——这显然会引起若干语法错误而导致编译中止。高手们开动脑筋想到了“#if 0 ... #endif”,它同样由预处理器进行处理,同样可以“屏蔽”一段代码,你想把说明文字写在里面也可以,这些和“/* */”都一样,但不一样的是:第一它允许嵌套(层数上限由预处理器决定)、第二你随时可以把“#if 0”改成“#if 1”来取消对某段代码的“屏蔽”——很卓越的特性,快抛弃笨拙的“/* */”吧!它唯一的缺点就是在编辑器中没有“注释”该有的文本显示样式。

2.

1 #if 0
2
3    code
4
5 #endif 

(1)code中定义的是一些调试版本的代码,此时code完全被编译器忽略。如果想让code生效,只需把#if 0改成#if 1

(2)#if 0还有一个重要的用途就是用来当成注释,如果你想要注释的程序很长,这个时候#if 0是最好的,保证不会犯错误。(但是林锐的书上说千万不要把#if 0 来当作块注释使用) #if 1可以让其间的变量成为局部变量。

(3)这个结构表示你先前写好的code,现在用不上了,又不想删除,就用这个方法,比注释方便。

                                                            2014.09.23(转)

时间: 2024-10-10 12:57:45

#if 1...#endif的相关文章

<!--[if IE]><style></style><![endif]-->

CSS hack就是为了让你的CSS代码兼容不同的浏览器,其中最难对付的就是IE浏览器的兼容性,因为它的版本很多,不过还好,微软发表声明已经不对IE8以下的版本进行维护了.但是我们也不能就认为不用学IE8之前版本的兼容性了.反过来,如果我想在IE浏览器中让元素表现出另外一种样式,我也可以通过CSS hack来实现,所以这招人烦的IE兼容性也可以为自己所用.总之,多学点没有坏处. CSS hack通常分为 条件Hack.属性hack.选择符hack.下面一一来介绍: 1.条件hack:: 表现形式

#ifdef、#ifndef、#else、#endif执行条件编译

我们开发的程序不只在pc端运行,也要在移动端运行.这时程序就要根据机器的环境来执行选择性的编译,如对PC端编译PC端的程序,对移动端编译移动端的程序,这里我们就可以用两组条件编译. #ifdef  #endif #ifndef #endif 我们先来了解下#ifdef ...#endif:语法格式是: #ifdef 宏名字           |#ifdef 宏名字 //任意代码             |//任意代码 #endif                       |#else |/

#if #elif #endif

原来还有#elif,代码来了! 文件: if_elif.c #include <stdio.h> #define A -1 int main(int agrc, char **argv) { #if A > 0     printf("A > 0\n"); #elif A < 0     printf("A < 0 \n"); #else     printf("A == 0 \n"); #endif     

C/C++预处理指令#define,#ifdef,#ifndef,#endif…

本文主要记录了C/C++预处理指令,常见的预处理指令如下: #空指令,无任何效果 #include包含一个源代码文件 #define定义宏 #undef取消已定义的宏 #if如果给定条件为真,则编译下面代码 #ifdef如果宏已经定义,则编译下面代码 #ifndef如果宏没有定义,则编译下面代码 #elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #endif结束一个#if……#else条件编译块 #error停止编译并显示错误信息 本来只是想了解一下#ifdef,#ifnd

PHP中的替代语法(冒号、endif、endwhile、endfor)

我们经常在wordpress一类的博客程序的模板里面看到很多奇怪的PHP语法,比如: <?php  if( empty($_GET['a]) ): ?>     <font color = "red">空的</font>     <?php endif;?> 对于相当一部分PHP爱好者来说根本没见过,这些是什么东西呢?难道是那些博客开发者自己搞的的仿PHP得模板语言? 非也,其实这些都是PHP的语法,只不过不常用而已,这些都是PHP流程控

&lt;!–[if lte IE ]&gt;……&lt;![endif]–&gt;详解

对IE浏览器需要特殊处理,进行的条件注释.条件注释就是一些if判断,但这些判断不是在脚本里执行的,而是直接在html代码里执行的, 常见的有: 1.<!--[if !IE]> <!--> 除IE外都可识别 <!-- <![endif]-->   2. <!--[if IE]> 所有的IE可识别 <![endif]-->   3. <!--[if IE 5.0]> 只有IE5.0可以识别 <![endif]-->  

C++ 为什么要使用#ifdef __cplusplus extern &quot;C&quot; { #endif

转载:http://www.cnblogs.com/ayanmw/archive/2012/03/15/2398593.html 转载:http://blog.csdn.net/zkl99999/article/details/48134621 转载: http://www.jianshu.com/p/5d2eeeb93590 经常看到别人的头文件 有这样的代码 #ifdef __cplusplus extern "C" { #endif // C 样式 的函数 #ifdef __cp

PHP之冒号、endif、endwhile、endfor 是什么鬼?f

解释:其实这些都是PHP的语法,只不过不常用而已,这些都是PHP流程控制的替代语法. 冒号(:)相当于是 左大括号---->{ endif.endwhile.endfor.endforeach---->右大括号 } 为什么要这样用呢? 因为在html与php混合时,这样使代码更整齐美观..

[转] #if, #elif, #else, #endif 使用

有些程序在调试.兼容性.平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置,把所有可能用到的代码都写进去,在初始化时配置,但在不同的情况下可能只用到一部分代码,就没必要把所有的代码都写进去,就可以用条件编译,通过预编译指令设置编译条件,在不同的需要时编译不同的代码.(一)条件编译方法 条件编译是通过预编译指令来实现的,主要方法有:1.#if, #elif, #else, #endif#if 条件 1 代码段 1#elif 条件 2   代码段 2...#e