`

转 一个用于在编译阶段发现错误的技巧

    博客分类:
  • C
 
阅读更多
在剖析epoll源代码的时候,发现了一个很有用的宏,该宏的目的主要是解决一些条件满足,一旦无法满足这些条件,将会在编译阶段提示错误,而不是到运行阶段出现crash。
宏定义如下:
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))  //如果条件*满足就直接char[-1],此时将会出现编译错误。

宏的使用:
BUILD_BUG_ON(EPOLL_CLOEXEC != O_CLOEXEC);

转帖:http://blog.csdn.net/tenfyguo/article/details/12151629
分享到:
评论

相关推荐

    ASP.NET的网页代码模型及生命周期

    创建一个单文件页模型,在【文件】按钮中选择【新建文件】选项,在弹出对话框中选择【Web窗体】或在右击当前项目,在下拉菜单中选择【添加新建项】选项即可创建一个.aspx页面,如图4-2所示。 图4-2 创建单文件页...

    c语言编写单片机技巧

    STANDBY电流测试:测量IC处于HALT模式时即每一个接点(PAD)在1态0态或Z态保持不变时的漏电流是否符合最低之规格。  耗电测试:整颗IC的静态耗电与动态耗电。  输入电压测试:测量每个输入接脚...

    C#微软培训资料

    第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型...

    测试培训教材

    一个好的测试管理工具应该能把以上几个阶段都管理起来。 测试人员每时每刻都在度量别人的工作成果,而测试人员的工作成果又由谁来度量呢?度量的标准和依据是什么呢?软件测试的度量是测试管理必须仔细思考的问题。...

    JAVA上百实例源码以及开源项目

    ejbCreate函数用于初始化一个EJB实例 5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,...

    asp.net知识库

    一个时间转换的问题,顺便谈谈搜索技巧 .net中的正则表达式使用高级技巧 (一) C#静态成员和方法的学习小结 C#中结构与类的区别 C#中 const 和 readonly 的区别 利用自定义属性,定义枚举值的详细文本 Web标准和ASP...

    JAVA上百实例源码以及开源项目源代码

    ejbCreate函数用于初始化一个EJB实例 5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,...

    vld(Visual Leak Detector 内存泄露检测工具 源码)

    首先在堆上申请一块临时内存,则该内存的地址可以转换成指向一个_CrtMemBlockHeader结构,在此结构中就可以获得这个链表。代码如下:  char *pheap = new char;  _CrtMemBlockHeader *pheader = pHdr(pheap)->...

    软件工程-理论与实践(许家珆)习题答案

    ● 测试(发现并改正错误,分为模块测试、集成测试和系统联调三级); ● 运行维护(扩充功能、纠错等)。 习题二答案 一、 选择题 1. 需求分析的主要目的是(B C)。 A) 系统开发的具体方案 B) 进一步确定用户的...

    mod_objc1:通过 GNUsteplibFoundation 在 Objective-C 中编写 Apache 1 模块

    其中的一个技巧/技巧是 Apache 在配置阶段卸载模块。 这在 GNU Objective-C 运行时没有(没有)很好地发挥作用。 所以我们不得不坚持使用 bundle(保持对共享库的引用)。 这从未在生产中用于任何事情。 而且你也不...

    MySQL中文参考手册

    + 3.4.4 运营一个使用MySQL的Web服务器 o 3.5 MySQL的许可证和技术支持费用 + 3.5.1 付款信息 + 3.5.2 联系信息 o 3.6 商业性支持的类型 + 3.6.1 基本的电子邮件支持 + 3.6.2 扩展的电子邮件支持 + 3.6.3 ...

    语言程序设计课后习题答案

    C++是一个更好的C,它保持了C的简洁、高效、接近汇编语言、具有良好的可读性和可移植性等特点,对C的类型系统进行了改革和扩充,因此C++比C更安全,C++的编译系统能检查出更多的类型错误。 C++语言最重要的特点是...

    mysql官方中文参考手册

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    MySQL 5.1参考手册 (中文版)

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    MYSQL中文手册

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用...

    MySQL 5.1参考手册中文版

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用...

    MySQL 5.1参考手册

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    MYSQL

    1 MySQL的一般的信息 1.1 什么是MySQL... 18.2.9 Table 'xxx' doesn't exist错误 18.3 MySQL 怎样处理一个溢出的磁盘 18.4 怎样从一个文本文件运行SQL命令 18.5 MySQL 在哪儿存储临时文件 18.6...

Global site tag (gtag.js) - Google Analytics