“#if 0/#if 1 ... #endif”的作用】的更多相关文章

1. "#if 0/#if 1 ... #endif"的作用,我们知道,C标准不提供C++里的"//"这样的单行风格注释而只提供"/* */"这样的块注释功能,我们通常使用它写代码中说明性的注释文字(注释作用)以及在调试时关闭某段代码对编译器的可见性(屏蔽作用),当然,这里所谓的"注释作用"和"屏蔽作用"是我们从功能上下的主观定义,对预处理器而言,两者并无任何区别.对于前者,因为"注释"…
原帖地址:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=2028608&bbs_page_no=1005&bbs_id=9999 1.“#if 0/#if 1 ... #endif”的作用 我们知道,C标准不提供C++里的“//”这样的单行风格注释而只提供“/* */”这样的块注释功能, 我们通常使用它写代码中说明性的注释文字(注释作用)以及在调试时关闭某段代码对编译器的可见性(屏蔽作用), 当然,这里所谓的“注释作用”和“屏蔽作用”是我们…
c,c++里面,头文件里面的ifndef /define/endif的作用 今天和宿舍同学讨论一个小程序,发现有点地方不大懂······ 是关于头文件里面的一些地方: 例如:要编写头文件test.h 在头文件开头写上两行: #ifndef _TEST_H #define _TEST_H//一般是文件名的大写 ············ ············ 头文件结尾写上一行: #endif 大概是以前没有学好吧,对这里不是很理解,为什么要用这些呢?刚才上网查了查,借鉴了点高手的,自己总结了一…
转载自百度百科 ,感谢度娘 1 2 3 #ifdef语句1 //程序2 #endif 可翻译为:如果宏定义了语句1则执行程序2. 作用:我们可以用它区隔一些与特定头文件.程序库和其他文件版本有关的代码. 代码举例:新建define.cpp文件 1 2 3 4 5 6 7 8 9 #include <iostream> using namespace std; int main(int argc, char *argv[]) { #ifdef DEBUG cout << "…
#ifdef __cplusplus // C++编译环境中才会定义__cplusplus (plus就是"+"的意思) extern "C" { // 告诉编译器下面的函数是c语言函数(因为c++和c语言对函数的编译转换不一样,主要是c++中存在重载) #endif 其实很简单,作用就是:如果此头文件是在c++中使用的(就是一个.cpp文件include此头文件,而不是一个.c文件),那么函数名称粉碎方式仍然使用C中的方式.(就是此函数编译后在object文件中的…
#if 0在代码中有2个作用. 1.作为行内注释 /**/是多行注释,如果想在/**/里面嵌套一个多行注释,怎么办呢? /* int a=10; /* - (void)test{ NSLog(@"This is a test!"); } */ */          //这种写法会报错因为第一个/*会和第一个*/配对,导致末尾的*/无法配对,看下面的截图,最后一个标记颜色都不一样 如果想在行内嵌套一个多行注释,可以像下面这样写 2.作为系统裁剪,屏蔽部分功能,必要时把#if 0改成#i…
一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是"条件编译".有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句. 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #endif 它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2. 其中#else部分也可以没有,即: #ifdef 程…
VC++ 6.0是一款很经典的C/C++开发工具,虽然是1998年的东西了,但是现在使用依然很广!在用它开发的时候,会发现在建立的工程的文件夹里面,有很多文件,各种后缀名.在这里呢,我主要说一下各个文件的作用是什么: DSW:全称是Developer   Studio   Workspace,最高级别的配置文件,记录了整个工作空间的配置信息,她是一个纯文本的文件,在vc创建新项目的时候自动生成     DSP:全称是Developer   Studio   Project,也是一个配置文件,不过…
多次尝试3.0在源码中直接用注解配置loadOnStartup=1,即web应用启动时创建servlet实例,发现不起作用,但是在web.xml配置则可以正常运行.先上源码. package lee; import javax.servlet.http.*; import javax.servlet.*; import javax.servlet.annotation.*; import javax.swing.*; import java.awt.event.*; import java.ut…
现在规定一下头文件书写规范, 根据陈皓编写的跟我一起些makefile,一定要记住:头文件中应该只是声明,而定义应该放在C/C++文件中.否则如果出现有定义,比如头文件中有int a =2;如果有多个源程序文件引用该头文件,那么在链接的时候就会出现重复定义,即使在头文件的首尾添加#ifnef,#define ,#enddif这样的形式也挽救不了这种错误,事实上,#ifnef和#enddif的作用仅仅是防止头文件嵌套包含.以下是转载https://blog.csdn.net/weixin_4165…
近日,在学习<ARM处理器裸机开发实战--机制而非策略>一书,在TQ2440开发板上,按照书中实例以及光盘配套程序源代码进行Timer0中断试验,编译成功后烧写到开发板上,没有任何反应,反复检查代码,一直没有找出哪里有问题,就是到开发板上没有预期效果.(让人纠结的很) 最终参考了TQ2440之定时器中断0的程序代码,编译成功后,烧写到板子上,惊喜出现了.绝对是久旱逢甘霖的感觉,在这里对TQ2440之定时器中断0的原创作者表示感谢. 后来,经过代码对比,发现两个可疑的地方: (1)之前的Time…
有时候我们在编程的时候,希望有些代码在我们需要时编译,不需要时不编译,也就是让它快速注释,这时候即可以考虑#ifdef和#endif,它们会使我们的编译器进行选择性编译.使用方法如下: #include<iostream>   #include<cstdio>        #define DEBUG  //至于这个DEBUG的名字,你们可以随心定义      using namespace std;   int main(){   #ifdef DEBUG  //如果你前面改掉了…
一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是"条件编译".有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句. 条件编译命令最常见的形式为: #ifdef 标识符  程序段1  #else  程序段2  #endif 它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2.  其中#else部分也可以没有,即:  #i…
在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时,就会出现大量重定义的错误.在头文件中实用#ifndef #define #endif能避免头文件的重定义.方法:例如要编写头文件test.h在头文件开头写上两行:#ifndef _TEST_H#define _TEST_H//一般是文件名的大写头文件结尾写上一行:#endif这样一个工程文件里同时包含两个test.h时,就不会出现重定义的错误了.分析:当第一次包含test.h时,由于没有定义_TES…
例如:要编写头文件test.h 在头文件开头写上两行: #ifndef _TEST_H #define _TEST_H//一般是文件名的大写 ············ ············ 头文件结尾写上一行: #endif 大概是以前没有学好吧,对这里不是很理解,为什么要用这些呢?刚才上网查了查,借鉴了点高手的,自己总结了一点,就写在这里了,有什么错误之处,请大侠们指出 .比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是…
转载:https://blog.csdn.net/minghui_/article/details/80748142 转自:#ifdef _DEBUG #define new DEBUG_NEW #endif的解释 在用vc时,利用AppWizard会产生如下代码: #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif 对于 #define new DEBUG…
ref目录里的dll是一个名为参考组件的东西,微软MSDN给的解释是 参考组件是一种特殊类型的程序集,仅包含表示库的公共API面所需的最小元数据数量.它们包括用于在构建工具中引用程序集时重要的所有成员的声明,但排除对其API契约没有明显影响的私有成员的所有成员实现和声明. MSDN 地址:https://docs.microsoft.com/en-us/dotnet/standard/assembly/reference-assemblies 如果想取消ref目录的生成则需要在项目文件中增加:…
1. “#if 0/#if 1 ... #endif”的作用,我们知道,C标准不提供C++里的“//”这样的单行风格注释而只提供“/* */”这样的块注释功能,我们通常使用它写代码中说明性的注释文字(注释作用)以及在调试时关闭某段代码对编译器的可见性(屏蔽作用),当然,这里所谓的“注释作用”和“屏蔽作用”是我们从功能上下的主观定义,对预处理器而言,两者并无任何区别.对于前者,因为“注释”中不会再出现“注释”和“需要屏蔽的代码段”,所以不会有嵌套的需求,所以通常不会有问题:而对于后者,当我们在调试…
#if  0  ...   #endif的作用跟/*...*/的作用是一样的,就是注释! 可是为什么不用注释符号/*? 答:为了解决嵌套注释.如下: #include“stdio.h” int main(){ : /*这是一个外层注释 /* int *b=&a; //这是一个内层代码注释 *b = 10; */ a++; */ } 上面的程序编译后发现缺少了一个注释符号,因为注释符头 " / *  "是根据最近结束符 " */  "来判断注释的区域的,但是一…
Javascript 中右移0位可以用来快速去掉小数,关于位移运算的定义: 右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0,或者补符号位. 实际看下效果: 32.5 >> 0  // 32 右移是什么作用? (32).toString('2') // 转换为2进制,得到 100000 ( 32 >> 1 ).toString(2) // 右移1位,得到 10000 对比下: 100000  // 实际值 32 010000  //…
上一章 我们分析了Cocos2d-x的内存管理,主要解剖了 Ref.PoolManager.AutoreleasePool这三个类,了解了对象是如何自动释放的机制.之前有一个类 Node经常出现在各种场合,不是做为参数就是做为返回值,那么这一章节我们就去看看这个Node类到底在Cocos2d-x里处于一个什么样的地位. 直接进入主题,我们打开CCNode.h文件.我去,这个文件有1500行,这么长怎么看啊,放松一下整体看过一遍,松了一口气,还好,还没那么糟,文件虽然大,注释占了有90%的篇幅,代…
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同.作为一种欲与C兼容的语言,C++保留了一部分过程 式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数.但是,C++毕竟是一种面向对象的程序设计语言,为了支 持函数的重载,C++对全局函数的处理方式与C有明显的不同. 2.从标准头文件说起 某企业曾经给出如下的一道面试题: 面试题 为什么标准头文件都有类似以下的结…
块注释例子 1. <!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]-->2. <!--[if IE]> 所有的IE可识别 <![endif]-->3. <!--[if IE 5.0]> 只有IE5.0可以识别 <![endif]-->4. <!--[if IE 5]> 仅IE5.0与IE5.5可以识别 <![endif]-->5. <!--[if gt…
创建pch文件如下: 添加文件Tableview-Prefix.pch 内容如下: #import <Availability.h> #ifndef __IPHONE_3_0 #warning "This project uses features only available in iOS SDK 3.0 and later." #endif #ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundat…
转载于:http://www.cnblogs.com/rollenholt/archive/2012/03/20/2409046.html 1.引言 C++语言的创建初衷是"a better C".可是这并不意味着C++中类似C语言的全局变量和函数所採用的编译和连接方式与C语言全然同样.作为一种欲与C兼容的语言. C++保留了一部分过程式语言的特点(被世人称为"不彻底地面向对象").因而它能够定义不属于不论什么类的全局变量和函数. 可是,C++毕竟是一种面向对象的程…
今天在做适配手机版时,chrome调到手机版,但是还是显示PC端的样式,无法展现出手机端的样式: 开始的时候还以为是chrome版本的问题,最新版本的chrome62.0是有很多变化的,而之前工作中使用最多的chrome来调试,是带有标尺等等. 搜索chrome版本无果,想了下,按照道理chrome版本越新,功能应该更好用才是. 百度了一下,发现是因为这句话:<meta name="viewport" content="width=device-width, initi…
契约式编程不是一门崭新的编程方法论.C/C++ 时代早已有之.Microsoft 在 .NET 4.0 中正式引入契约式编程库.博主以为契约式编程是一种相当不错的编程思想,每一个开发人员都应该掌握.它不但可以使开发人员的思维更清晰,而且对于提高程序性能很有帮助.值得一提的是,它对于并行程序设计也有莫大的益处. 我们先看一段很简单的,未使用契约式编程的代码示例. // .NET 代码示例 public class RationalNumber { private int numberator; p…
一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件 编译”.有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句. 条件编译命令最常见的形式为: /////////#ifdef 标识符 程序段1 #else 程序段2 #endif 它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2. 其中#else部分也可以没有,即: #if…
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdzE4NzY3MTA0MTgz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt=""> class CC_DLL AutoreleasePool { public: //创建一个存放ref的对象池.而且放入PoolManager对象池管理器中 AutoreleasePo…