#if defined() 含义

2023-10-28

文章出处:http://www.blogjava.net/tinysun/archive/2010/07/27/327215.html


    看到内核代码中有很多地方都使用了#if defined(),可是却找不到这个东东的定义,主要是define(),它和我们常用的 #ifdef 有什么不同吗?


    4.2.3 Defined The special operator defined is used in #if and #elif expressions to test whether a certain name is defined as a macro. defined name and defined (name) are both expressions whose value is 1 if name is defined as a macro at the current point in the program, and 0 otherwise. Thus, #if defined MACRO is precisely equivalent to #ifdef MACRO.

defined is useful when you wish to test more than one macro for existence at once. For example,

#if defined (__vax__) || defined (__ns16000__)

would succeed if either of the names __vax__ or __ns16000__ is defined as a macro.

Conditionals written like this:

#if defined BUFSIZE && BUFSIZE >= 1024

can generally be simplified to just #if BUFSIZE >= 1024, since if BUFSIZE is not defined, it will be interpreted as having the value zero.

If the defined operator appears as a result of a macro expansion, the C standard says the behavior is undefined. GNU cpp treats it as a genuine defined operator and evaluates it normally. It will warn wherever your code uses this feature if you use the command-line option -pedantic, since other compilers may handle it differently.




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

#if defined() 含义 的相关文章

随机推荐

  • 机器学习算法的随机数据生成

    作者 刘建平Pinard 链接 https www cnblogs com pinard p 6047802 html 编辑 石头 在学习机器学习算法的过程中 我们经常需要数据来验证算法 调试参数 但是找到一组十分合适某种特定算法类型的数据
  • Intellij IDEA自定义Live Templates提高编码效率

    Intellij IDEA Live Templates 详情见 https www cnblogs com expiator p 17380434 html 自定义Live Templates的示例 以下的示例 都是使用首字母 作为关键词
  • 让工作效率提升10倍的浏览器,真是太棒了

    浏览器不仅仅是用来搜索查询资料的工具 它还可以让我们看新闻资源 最重要的是可以帮助我们完成各种各样的工作 提升工作效率 我最近发现了一款能够让工作效率提升10倍的浏览器 它的工具非常丰富 而且支持在线工具免费使用 我建议大家一定要收藏起来好
  • Linux查看mysql是否启动+mysql启动(全)

    整理一下Linux下启动mysql服务的命令 目录 1 使用命令 service mysqld status 2 使用命令 ps aux grep mysqld 3 使用命令 pidof mysqld 4 使用命令 ps ef grep m
  • Arcgis Pro中加载osgb(倾斜)数据

    1 新建工程 不能含中文路径 设置坐标系 2 转换格式 3 新建场景加载数据 4 直接拖动 slpk数据到场景中即可
  • WINDOWS专集大集合,绝对是精品中的精品

    WINDOWS专集大集合 绝对是精品中的精品 每IP最多5个线程 请勿尝试多线程下载 以免被封IP 史努比系统维修启动光盘 3 8 最终版 软件类别 国产软件 操作系统 软件语言 简体中文 软件大小 602M 更新内容 1 KVDOS 20
  • [移动通讯]【Carrier Aggregation-4】【LTE-5】

    前言 前面讲过通过能力上报 以及RRC Connection Reconfiguration 添加SCell 添加完成后 UE 处于Inactive 状态 本章主要讨论一下 Inactive 状态Active 状态的切换 3GPP TS 3
  • python 根据C盘卷号进行 加密解密,可以用做软件激活码

    import base64 import win32api from pyDes import from pyDes import des PAD PKCS5 ECB from binascii import a2b hex 如果需要用二进
  • JavaFX程序关闭的正确方式

    当用户试图退出程序时 程序能够有机会进行确认和清理的工作 因此 正确的程序退出过程应该包含一些步骤 增加Button或菜单 让用户发布希望退出程序的信号 可选 显示窗口 确认用户真的希望退出程序 执行必要的清理工作 如 关闭文件和其他资源
  • Netty 是什么?和 Tomcat 有什么区别?特点是什么?

    Netty 是一个基于 NIO 的异步网络通信框架 性能高 封装了原生 NIO 编码的复杂度 开发者可以直接使用 Netty 来开发高效率的各种网络服务器 并且编码简单 Tomcat 是一个 Web 服务器 是一个 Servlet 容器 基
  • 《剑指offer》练习及解析(C++代码)13-16

    一 剑指 Offer 13 机器人的运动范围 解法 1 回溯法 一种搜索方法 每次选择一个方向向前搜索 直到到达最优目标或确定无法达到目标时 后退重新向未选择的方向前进 用二维数组记录是否走过此位置 且每次只需向下或向右行进即可 代码 My
  • To install them, you can run: npm install --save babel-runtime/core-js

    执行npm run dev命令的时候提示下面这个报错 报错信息 To install them you can run npm install save babel runtime core js 解决命令 npm install save
  • 14C++11多线程编程之Windows临界区和各种互斥量(recursive_mutex,std::timed_mutex,recursive_timed_mutex)

    1 Windows临界区 1 Windows临界区与C 11的mutex的区别 mutex不能多次lock 而Windows的临界区可以多次进入 即EnterCriticalSection 但是进入多少次临界区就需要多次LeaveCriti
  • PlatformIO离线安装终极方法

    PlatformIO IDE core 离线安装终极方法 众所周知 PlatformIO的资源服务器在国外 其资源包和更新包经常出现下载不了而导致PlatformIO Home界面无法启动的情况 这几年 我上的智能硬件课程中使用Platfo
  • 消息队列(MQ)简介

    概念 从字面理解 本质就是队列 FIFO先入先出 只不过队列中存放的是Message而已 是一种跨进程的通信机制 用于上下游传递消息 在互联网架构中 MQ是常见的上下游 逻辑解耦 物理解耦 的消息通信服务 在使用MQ之后 消息发送上只需要依
  • packet capture抓取抖音

    这是一款安卓端的抓包工具 我们打算使用它来抓取抖音 首先得安装好着两款软件 1 配置app 至此 软件可以进行使用 2 打开抖音APP 玩一会抖音 然后打开packet capture 会显示出这里有13条数据 点击有数据的 得到如下 这块
  • Databend 借助对象存储帮你实现降本增效

    本篇文章围绕着 什么是对象存储 当 Databend 遇到对象存储 2022 年 Databend 利用对象存储降本的案例 国内优秀的对象存储产品 基于对象存储创业的产品 什么是对象存储 对象存储是一种可以非结构化存储和管理数据的技术 可以
  • eclipse启动参数

    eclipse 启动参数 arch processor architecture 描述 指定所使用的处理器的类别 举例 eclipse arch x86或eclipse arch sparc application 描述 指定要运行的应用
  • adspower是做什么用的,adspower费用,adspower类似软件有哪些?

    adspower费用 通过价格表 我们可以看出 美元报价表对国内用户不够友好 而且环境数量还是太少了 对于长期做相关业务的朋友 可能远远不够 候鸟浏览器 候鸟浏览器官网 防关联超级指纹浏览器系统工具 费用 候鸟浏览器相对价格更低 包括创建环
  • #if defined() 含义

    文章出处 http www blogjava net tinysun archive 2010 07 27 327215 html 看到内核代码中有很多地方都使用了 if defined 可是却找不到这个东东的定义 主要是define 它和