注意两者都有个define的作用,区别在于使用方式上。前者的通常用法是:
#ifdef  XXX

....

#else

....

#endif

只能在两者中选择是否有定义。对于后者,常用法是:

#if defined xxx1

....

#elif defined xxx2

....

#elif defined xxx3

....

#endif

可以在多个中选择是否有定义.

#ifdef 和 #if defined 的区别在于,后者可以组成复杂的预编译条件,比如

#if defined (AAA) && defined (BBB)
xxxxxxxxx
#endif #if defined (AAA) || VERSION > 12
xxxxxxxxx
#endif 而#ifdef 就不能用上面的用法,也就是说,当你要判断单个宏是否定义时
#ifdef 和 #if defined 效果是一样的,但是当你要判断复杂的条件时,只能用 #if defined

#ifdef和#if defined的差别的更多相关文章

  1. #ifdef 和 #if defined 的区别 -- 转

    #ifdef 和 #if defined 的区别在于,后者可以组成复杂的预编译条件,比如 #if defined (AAA) && defined (BBB) xxxxxxxxx #e ...

  2. (五)c语言条件编译#ifdef与#if defined

    c语言条件编译#ifdef与#if defined defined NAME是用来判断NAME是否被定义了(被用define定义了). #ifdef NAME == #if defined(NAME) ...

  3. C++ #if #endif #define #ifdef #ifndef #if defined #if !defined详解 (转)

    (源)http://blog.csdn.net/sky1203850702/article/details/42024673 首先,让我们先从头文件开始,在很多头文件里,我们会看到这样的语句 #ifn ...

  4. #ifdef 和 #if defined的区别

    #ifdef 和 #if defined的区别在于,后者可以组成复杂的预编译条件,比如 #if defined (AAA) && defined (BBB)xxxxxxxxx#endi ...

  5. c语言条件编译#ifdef与#if defined

    c语言条件编译#ifdef与#if defined   c语言条件编译#ifdef与#if defined 摘自:https://www.cnblogs.com/zhangshenghui/p/566 ...

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

    转自:http://quanminchaoren.iteye.com/blog/1870977 #if的使用说明 #if的后面接的是表达式 #if (MAX==10)||(MAX==20) code. ...

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

    #if的使用说明 #if的后面接的是表达式 #if (MAX==10)||(MAX==20) code... #endif 它的作用是:如果(MAX==10)||(MAX==20)成立,那么编译器就会 ...

  8. #if、#ifdef、#if defined之间的区别(转载)

    转自:http://www.yucoat.com/c_program/difference_if_ifdef_if_defined.html #if的使用说明 #if的后面接的是表达式 #if (MA ...

  9. 条件编译#if #ifdef

    近期由于一些莫名其妙的原因开始学c++,我觉得我哪天要是挂了也是被自己给折腾死的,算了,反正不是折腾死就是被淘汰,当是没事打发时间了,废话不多说,开始今天的主题. 之前接触的注释就是注释,条件语句就是 ...

随机推荐

  1. linux shell判断脚本执行时传入了多少个参数,判断脚本参数个数,参数数量

    需求描述: 在写shell脚本的时候,会有这样的需求,脚本在执行的过程中是需要传入参数的,如果没有参数传递给脚本, 就会给出相应的脚本使用方法或者例子,告知,脚本后面应该加什么样的参数.所以呢,这里要 ...

  2. Java web url 规范

    设计URI应该遵循的原则 URI是网站UI的一部分,因此,可用的网站应该满足这些URL要求 简单,好记的域名 简短(short)的URI 容易录入的URI URI能反应站点的结构 URI是可以被用户猜 ...

  3. docker tag 详解

    docker tag 用于给镜像打标签,语法如下: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] ① 比如我现在有一个 centos 镜像: [ro ...

  4. 百度地图sdk问题 error inflating class com.baidu.mapapi.map.mapview

    最近在封装开发中,有机会遇到问题还是记录下吧 但是其实都是一个原因  就是 初始化 在MyAplication  onCreate()中加入 SDKInitializer.initialize(get ...

  5. 说说SPI协议

    SPI,是英语Serial Peripheral Interface 的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管 ...

  6. c语言基础知识要点

    C语言程序的构成 与C++.Java相比,C语言其实很简单,但却非常重要.因为它是C++.Java的基础.不把C语言基础打扎实,很难成为程序员高手. 一.C语言的结构 先通过一个简单的例子,把C语言的 ...

  7. 使用WdatePicker获取比当前时间大的写法

    <input name="today.date" class="Wdate" type="text" onClick="Wd ...

  8. php第二例

    参考: http://www.php.cn/code/3645.html 前言 由于navicat在linux平台不能很好的支持, PHP的学习转到windows平台. php IDE: PhpSto ...

  9. js的声明提前

    由于js声明提前的作用,所以在js中后面定义的函数也可以再前面使用. 不过,项目中看到过这样的写法 var a = function(){}, b = function(){}; 这种写法使代码看上去 ...

  10. Android Framewrork资源类型有哪些?

    1. Google Framework res frameworks/base/core/res/res/values <public type="attr" name=&q ...