#if、#ifdef、#if defined之间的区别【转】

转自:http://quanminchaoren.iteye.com/blog/1870977

#if的使用说明

#if的后面接的是表达式

#if (MAX==10)||(MAX==20)
 code...
#endif

它的作用是:如果(MAX==10)||(MAX==20)成立,那么编译器就会把其中的#if 与 #endif之间的代码编译进去(注意:是编译进去,不是执行!!)

#if defined的使用

#if后面接的是一个宏。

#if defined (x)
    ...code...
#endif

这个#if defined它不管里面的“x”的逻辑是“真”还是“假”它只管这个程序的前面的宏定义里面有没有定义“x”这个宏,如果定义了x这个宏,那么,编译器会编译中间的…code…否则不直接忽视中间的…code…代码。

另外 #if defined(x)也可以取反,也就用 #if !defined(x)

#ifdef的使用

#ifdef的使用和#if defined()的用法一致
#ifndef又和#if !defined()的用法一致。

最后强调两点:
第一:这几个宏定义只是决定代码块是否被编译!
第二:别忘了#endif

时间: 2024-09-26 15:47:26

#if、#ifdef、#if defined之间的区别【转】的相关文章

C开发之----#if、#ifdef、#if defined之间的区别

#if的使用说明 #if的后面接的是表达式 #if (MAX==10)||(MAX==20) code... #endif 它的作用是:如果(MAX==10)||(MAX==20)成立,那么编译器就会把其中的#if 与 #endif之间的代码编译进去(注意:是编译进去,不是执行!!) #if defined的使用 #if后面接的是一个宏. #if defined (x) ...code... #endif 这个#if defined它不管里面的"x"的逻辑是"真"还

深层次探讨mutex与semaphore之间的区别

深层次探讨mutex与semaphore之间的区别 作者 digoal 日期 2016-11-10 标签 mutex , semaphore , Linux , 锁 , 内核 背景 本文依旧和<PostgreSQL 同步流复制锁瓶颈分析>这篇文章有关. 本文主要介绍一下Linux下面信号量(semaphore)和互斥锁(mutex)的区别. 原文地址 http://www.aichengxu.com/view/2456963 原文 看过Linux内核的同学都知道,Linux内核中除了有sema

SEO优化人员是否知道标签与栏目、专题、关键词之间的区别

摘要: 相比网站的关键词我们对文章标签的关注实在太少,不知道作为SEO优化人员的你是否知道标签与栏目.专题.关键词之间的区别?也许你会认为这是无关紧要的事情,如果是这样的话只能 相比网站的关键词我们对文章标签的关注实在太少,不知道作为SEO优化人员的你是否知道标签与栏目.专题.关键词之间的区别?也许你会认为这是无关紧要的事情,如果是这样的话只能说你是一个不善于思考问题的人,永远成不一个真正的SEO,因为SEO本身就是一个需要注重细节的职业.笔者发现现在几乎所有的文章都支持添加标签的功能,为什么一

开源领域常用的许可协议和它们之间的区别

越来越多的开发者与设计者希望将自己的产品开源,以便其他人可以在他们的代码基础上做更多事,开源社区也因此充满生机.在我们所能想到的应用领域,都有开源软件存在(象 WordPress,Drupal 这些开源CMS).然而很多人对开源许可并不了解,本文介绍开源领域常用的几种许可协议以及它们之间的区别. 什么是许可协议? 什么是许可,当你为你的产品签发许可,你是在出让自己的权利,不过,你仍然拥有版权和专利(如果申请了的话),许可的目的是,向使用你产品的人提供一定的权限. 不管产品是免费向公众分发,还是出

JS在IE和Firefox之间的区别

JS代码在IE和Firefox之间的区别,16个,非常实用. 1.    HTML 对象的 id 作为对象名的问题 IE:HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用 FF:不支持 解决方法:使用document.getElementById替代document.all 2.       如果控件只有name,没有id, 用getElementById时: IE:可以找到对象 FF:返回NULL 解决方法:所有控件必须设置ID属性 3.       Evel: I

ashx介绍以及ashx文件与aspx文件之间的区别

 这篇文章主要介绍了ashx以及ashx文件与aspx文件之间的区别.需要的朋友可以过来参考下,希望对大家有所帮助 ashx是什么文件?   .ashx 文件用于写web handler的..ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件解析以及页面处理的过程.其实就是带HTML和C#的混合文件.    .ashx文件适合产生供浏览器处理的.不需要回发处理的数据格式,例如用于生成动态图片.动态文本等内容.    ashx文件是.net

jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别

        这篇文章主要是对jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 在这个sprint中,因为要写前端UI,所以用到了jQuery,但是jQuery在向上遍历DOM树的API中,有parents(). parent().closest()这几个,一直不太清楚它们具体的区别,所以狠下心好好读了一下jQuery的API文档,并把区别记在这里,以供参考.    1.parents

AP、路由、中继、桥接、客户端模式之间的区别

  AP.路由.中继.桥接.客户端模式之间的区别 在TP-Link迷你无线路由器上一般有AP(接入点)模式.Router(无线路由)模式.Repeater(中继)模式.Bridge(桥接)模式.Client(客户端)模式;但很多用户都不清楚这几种模式的之间的区别,下面将对这几种模式进行详细的介绍. 注意:有的型号的TP-Link 迷你无线路由器上只有AP(接入点)模式.Router(无线路由)模式.Repeater(中继)模式这3种模式. AP(接入点)模式 AP(接入点)模式下,只需要把一根可

浅析jQuery(function(){})与(function(){})(jQuery)之间的区别

 本篇文章主要是对jQuery(function(){})与(function(){})(jQuery)之间的区别进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 Jquery是优秀的Javascrīpt框架.我们现在来讨论下在 Jquery 中两个页面载入后执行的函数.   $(document).ready(function(){   // 在这里写你的代码... });在DOM加载完成时运行的代码   可以简写成   jQuery(function(){  });    (func