C 语言中#if 0

  在C语言中有条件编译指令,常见的有:

  #define 定义宏
  #undef 取消已定义的宏  
  #if 如果给定条件为真,则编译下面代码
  #ifdef 如果宏已经定义,则编译下面代码
  #ifndef 如果宏没有定义,则编译下面代码  
  #elif 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码,其实就是else if的简写
  #endif 结束一个#if……#else条件编译块
  #error 停止编译并显示错误信息

#if 0....#endif 的例子

#include <stdio.h>

int main()
{
#if 0
	printf("this is never here!\n");
#endif
	printf("#if .....#endif 之间的语句永远不会被执行!\n");
	return 0;
}

  

  在涉及到C语言的项目时,可能有人会注意到里面出现了#if 0这样的语句,既然里面的语句永远不会被执行,那为什么要留下这样的代码呢?

看下面的例子:

#include <stdio.h>
int main
{
/*
  int a=1;
     /*int b=2;*/
  int c=3;
*/
return 0;
}

  这样的代码在编译的时候会出错,因为/*   */  跟最近的匹配,所以出现了错误。使用#if 0  .....#endif  可以用来避免这种错误,同时在代码中留下暂时不用,但可能有价值的代码。

时间: 2024-11-02 18:10:38

C 语言中#if 0的相关文章

为什么计算机编程语言中:0.1+0.2不等于0.3

最近在学习JS过程中发现在计算机JS时发现了一个非常有意思事,0.1+0.2的结果不是0.3,而是0.30000000000000004,但先将小数做乘法然后相加,再除回来就得到想要的0.3 我用python试了一下,发现python也是一样的,结果也是0.30000000000000004. 然后我开始信息搜集,最后找到了答案.想知道这其中的原因,要先理解这些点:二进制.指数形式.IEEE 754标准. 1.二进制 在计算机中所有的数据都是二进制形式存储的,包括整数.浮点数以及其他所有类型的数

C/C++语言中NULL、&#39;\0’和0的区别

注:本文参考了http://blog.csdn.net/mylinx/article/details/6873253及书籍<征服C指针>([日]前桥和弥著). NULL.'\0'和0的值是一样的,都是0,不过它们的表现形式不一样: 1. NULL: 即空指针,不过在C和C++中并不一样.在VS 2013的库文件string.h中可以看到如果定义. 1 /* Define NULL pointer value */ 2 #ifndef NULL 3 #ifdef __cplusplus 4 #d

C语言中do...while(0)的妙用(转载)

转载来自:C语言中do...while(0)的妙用,感谢分享. 在linux内核代码中,经常看到do...while(0)的宏,do...while(0)有很多作用,下面举出几个: 1.避免goto语句: 通常,如果一个函数开始要分配一些资源,然后如果在中途遇到错误则要退出函数,当然,退出前要释放资源,我们的代码可能如下: 1 #defien N 10 2 3 bool Execute() 4 { 5 // 分配资源 6 int *p = (int *)malloc(N * sizeof(int

Java语言中String累的总结

String类 1.Java.lang包简介 java.lang包是java内置的一个基础包,其中包含了一系列程序中经常要用到的类: 在默认情况下,每个java程序都会自动导入该包,因此无需在程序中显式地声明. 2.String类 Java语言中,字符串是String类的对象: Java语言中,String是引用数据类型: 可以通过使用String类提供的方法来完成对字符串的操作: 创建一个字符串对象之后,将不能更改构成字符串的字符: 每当更改了字符串版本时,就创建了一个新的字符串对象,并在其内

C语言中,头文件和源文件的关系(转)

简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件)4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息.(生成.exe文件) 编译器在编译时是以C文件为单位进行的,也就是

转:C语言中的static变量和C++静态数据成员(static member)

转自:C语言中的static变量和C++静态数据成员(static member) C语言中static的变量:1).static局部变量        a.静态局部变量在函数内定义,生存期为整个程序运行期间,但作用域与自动变量相同,只能在定义该变量的函数内使用.退出该函数后, 尽管该变量还继续存在,但不能使用它.        b.对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值.而对自动变量不赋初值,则其值是不定的.2).static全局变量        全局变量本身就是静

Swift语言中 String 的一些操作方法

整理自慕课网liuyubobobo老师在<玩儿转Swift>课程中的讲解,在此表示感谢!同时推荐这套视频课程http://www.imooc.com/learn/127 var str = "Welcome to Play Swift! Step by step to learn Swift." // Range的用法和相关字符串的操作代码片段  str.rangeOfString(“Step”)  // 字符串片段“Step”所处的字符范围 23..<27, 也即第

C语言中volatilekeyword的作用

一.前言 1.编译器优化介绍: 由于内存訪问速度远不及CPU处理速度,为提高机器总体性能,在硬件上引入硬件快速缓存Cache,加速对内存的訪问.另外在现代CPU中指令的运行并不一定严格依照顺序运行,没有相关性的指令能够乱序运行,以充分利用CPU的指令流水线,提高运行速度.以上是硬件级别的优化.再看软件一级的优化:一种是在编写代码时由程序猿优化,还有一种是由编译器进行优化.编译器优化经常使用的方法有:将内存变量缓存到寄存器:调整指令顺序充分利用CPU指令流水线,常见的是又一次排序读写指令.对常规内

c语言中char* 代表什么

1 c语言中,char* 代表 字符指针类型,当其指向一个字符串的第一个元素时,它就可以代表这个字符串了 2 示例 #include<stdio.h> int main(){ char* str = "learn c"; printf("%s\n", str); getchar(); return 0; } /*运行结果是 learn c */ 3 分析 在char* str="learn c";中,"learn c&quo