宏定义min(x, y)中(void)(&x==&y)含义?

C/C++ > C语言 [问题点数:20分,结帖人bx__8840668]
等级
本版专家分:0
结帖率 80%
等级
本版专家分:33509
勋章
Blank
黄花 2014年7月 C/C++大版内专家分月排行榜第二
2014年5月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2014年10月 C/C++大版内专家分月排行榜第三
2014年4月 C/C++大版内专家分月排行榜第三
等级
本版专家分:0
等级
本版专家分:33509
勋章
Blank
黄花 2014年7月 C/C++大版内专家分月排行榜第二
2014年5月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2014年10月 C/C++大版内专家分月排行榜第三
2014年4月 C/C++大版内专家分月排行榜第三
等级
本版专家分:0
Jeremy_Bai

等级:

(void) (&_x == &_y)

【整理】min()的宏定义中的(void) (&_x == &_y)的含义 转自: http://hi.baidu.com/serial_story/blog/item/b6fd81098b5b1b296a60fb4d.html 近日无意间发现,关于常见的min宏定义,在Linux是这样的: /* * ...

linux内核min、max函数

今天看见usb_stor_access_xfer_buf函数的时候,想看看里面的min 函数是不是按照我们写的那么写。但是一看傻啦,还有些东东我还没用过,于是赶紧google一下,那到底下面代码是什么样的呢?大家可以到、include/linux/...

C语言宏定义##连接符和#符的使用

C语言宏定义##连接符和#符的使用  document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.get

Linux min 和 max

定义在 include/linux/...#define min(x,y) ({ /  typeof(x) _x = (x); /  typeof(y) _y = (y); /  (void) (&_x == &_y); /  _x < _y ? _x : _y; }) #define max(x,y) ({ /  typeof(x) _x = (x); /

min()的宏定义中的(void) (&_x == &_y)的含义

近日无意间发现,关于常见的min宏定义,在Linux是这样的: /* * min()/max()/clamp() macros that also do * strict type-checking.. See the * "unnecessary" pointer comparison. */ #define min(x, y) ({ ...

C语言宏定义的几个坑和特殊用法

由于本文主要参考GCC文档,某些细节(如参数的空格是否处理之类)在别的编译器可能有细微差别,请参考相应文档。 基础 仅仅是在C预处理阶段的一种文本替换工具,编译完之后对二进制代码不可见。基本...

inline用法详解

(一)inline函数(摘自C++ Primer的第三版)  在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联。  inline int min(int first, int secend) {/****/};

例解GNU C之typeof

前言:计算机语言是编译器和程序员交流的依据和规范,GNU C是GCC特有的功能,在Linux内核被广泛应用。  帮助文档:http://gcc.gnu.org/onlinedocs/gcc-4.6.2/gcc/C-Extensions.html#C-Extensions    关键字...

宏定义实现 得到两个数的最值

使用两种宏定义的方法实现 得到两个数的最小值和最值 方法一: 利用三重条件运算符 #include #define MIN(A,B) ( (A) > (B) ? (B) : (A) ) #define MAX(A,B) ( (A) > (B) ? (A) : (B) ) int main(void) { printf(...

C语言 -- 宏定义中使用语句表达式和预处理器运算符

使用语句表达式来定义宏,不仅可以实现复杂的功能,而且还能避免宏定义带来的歧义和漏洞。下面以一个简单的最小值的宏为例子一步步说明。 1、灰常简单的么,使用条件运算符就能完成,不就是 #define MIN(x,y) x &...

C语言中宏定义的使用

1.1 宏定义的基本语法 1.2 宏定义的优点 1.3 宏定义的缺点 1.4 宏还是函数 2 使用宏时的注意点 2.1 算符优先级问题 2.2 分号吞噬问题 2.3 宏参数重复调用 2.4 对自身的递归引用 3. 宏函数的集中特定语法 3.1 ...

C语言的那些小秘密之预处理

预处理是C语言的一个重要知识点,它能改善程序设计的环境,有助于编写易移植、易调试的程序。因此,我们有必要掌握好预处理...接下来我尽可能的把预处理重要知识点向读者讲解清楚,使读者能够在自己以后编程的过程

Linux内核Min和Max函数

今天看代码时看到一个有趣的东东,就是linux内核也有min函数,但它的实现很是奇怪,先贴出来: /* * min()/max() macros that also do * strict type-checking.....#define min(x,y) ({ typeof(x) _x =

C的复合语句总结

C表达式和复合语句的如下: ({exp1; exp2; exp3;}) 其值等于exp3的值。如果exp3不能求值,得到的结果就是void。 如下: ( {int a = 2+1; int b = 0; b;} ) // 0 ( {int a = 2+1; int b = 0; int c = 0;} ) // ...

详解 GNU C 标准的 typeof 关键字

如果你是 C++ 程序员,应该接触过 C++11 里的 decltype 操作符,它的作用是自动推导表达式的数据类型,以解决泛型编程有些类型由模板参数决定而难以(甚至不可能)表示的问题。其实这个特性在 C 语言也早有类似...

【C语言】Linux内核源码--min,swap宏定义

Linux3.5的部分宏定义在linux-3.5/include/linux/kernel.h的头文件有定义 /* * min()/max()/clamp() macros that also do * strict type-checking.. See the * "unnecessary" pointer comparison. */ #define ...

求最小值的:#define min(x,y) x > y? y: x 的陷阱,慎用

求最小值的:①#define min(x,y) x > y? y: x。这个网上遍地都是,殊不知,这个存在严重bug。 顺便再列一下,下面这几个也存在严重bug,使用前一定要仔细考虑 ②#define min(x,y) (x) > (y)? (y): ...

inline函数用法详解

inline函数定义 内联函数的编程风格 慎用内联 inline 和 预处理的区别

C++的内联函数inline总结

突然看到C++Primer讲到,对于vector的一个循环,调用语句:(示例代码i=v.begin()不是很规范,虽然不会出错,客官请将就着看) for (int i=v.begin() ; i() ; i++) { .... } 对于size()

解决Opencv高低版本不兼容问题

目前OpenCV版本已更新到2.4......法一、将opencv1.0的各种.h或者.lib文件拷到opencv2.3.1对应include/library的路径的文件夹下。 e.g. Cannot open include file: 'cxtypes.h': No such file or

C语言宏定义,内置宏,__FILE__,__LINE__,## 用法

当然宏定义非常重要的,它可以帮助我们防止出错,提高代码的可移植性和可读性等。 下面列举一些成熟软件常用得宏定义 1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 ...

C++##(两个井号)和#(一个井号)用法

C(和C++)(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的的使用问题做了简单总结。 关 于#和## 在C语言的宏中,#的功能是将其后面的参数进行字符串化操作...

C语言宏定义

1. 简单宏定义 简单的宏定义有如下格式: [#define指令(简单的宏)] #define 标识符替换列表 替换列表是一系列的C语言记号,包括标识符、关键字、数、字符常量、字符串字面量、运算符和标点符号。当预...

x264源代码简单分析:x264_slice_write()

本文简单分析x264的x264_slice_write()的源代码。x264_slice_write()是x264项目的核心,它完成了编码了一个Slice的工作。根据功能的不同,该函数可以分为滤波(Filter),分析(Analysis),块编码(Encode)和熵...

#define用法集锦(非常全)

Definition:The #define Directive You can use the #define directive to give a meaningful name to a constant in your program. The two forms of the syntax are: Syntax #define identifier token-string...

C++之内联函数(inline)

概念 内联函数是指用inline关键字修饰的...编译时,类似替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理。 对内联函数进行任何修...

C语言宏定义、宏函数、内置宏与常用宏

而C语言(C++)特有的两把双刃剑指针和宏定义/宏函数使得C语言在底层开发披荆斩棘、无所不能。这两个概念涉及范围比较广,其分支点也比较多,可谓星罗棋布,但这每颗星都足以照亮C语言因其开发周期、可维护性、可...

ROS navigation planner--GlobalPlanner

在关于move base 的配置文章,关于planner部分的分析有一句:对于global planner,可以采用以下三种实现之一: "navfn/NavfnROS","global_planner/GlobalPlanner","carrot_planner/CarrotPlanner"本文分析其中的一...

EndNoteX9 汉化+原版_破解版安装包

EndNote X9最新版,包括汉化版本和原版本,汉化方法: 1、双击[ENX9Inst.msi]安装EndNote X9,安装时选择试用,安装完成后不要运行EndNote; 2、如果想使用汉化版,可以将CHS文件夹里的[EndNote.exe]拷贝到EndNote的安装目录下,替换原文件即可汉化、破解。 3、如果想使用英文版,可以将ENG文件夹里的[EndNote.exe]拷贝到EndNote的安装目录下,替换原文件即可直接破解。 注意:不论用的是英文版还是中文版,替换之后即可破解,无需输入序列号。

深入浅出MySQL数据库开发、优化与管理维护

第1部分 基础篇  第1章 MySQL的安装与配置    1.1 MySQL的下载     1.1.1 在Windows平台下下载MySQL     1.1.2 在Linux平台下下载MySQL    1.2 MySQL的安装     1.2.1 在Windows平台下安装MySQL     1.2.2 在Linux平台下安装MySQL    1.3 MySQL的配置     1.3.1 Windows平台下配置MySQL     1.3.2 Linux平台下配置MySQL    1.4 启动和关闭MySQL服务     1.4.1 在Windows平台下启动和关闭 MySQL服务     1.4.2 在Linux平台下启动和关闭MySQL服务    1.5 小结 显示全部信息第1部分 基础篇  第1章 MySQL的安装与配置    1.1 MySQL的下载     1.1.1 在Windows平台下下载MySQL     1.1.2 在Linux平台下下载MySQL    1.2 MySQL的安装     1.2.1 在Windows平台下安装MySQL     1.2.2 在Linux平台下安装MySQL    1.3 MySQL的配置     1.3.1 Windows平台下配置MySQL     1.3.2 Linux平台下配置MySQL    1.4 启动和关闭MySQL服务     1.4.1 在Windows平台下启动和关闭MySQL服务     1.4.2 在Linux平台下启动和关闭MySQL服务    1.5 小结   第2章 SQL基础    2.1 SQL简介    2.2 (My)SQL使用入门     2.2.1 SQL分类     2.2.2 DDL语句     2.2.3 DML语句     2.2.4 DCL语句    2.3 帮助的使用     2.3.1 按照层次看帮助     2.3.2 快速查阅帮助     2.3.3 常用的网络资源    2.4 小结   第3章 MySQL支持的数据类型    3.1 数值类型    3.2 日期时间类型    3.3 字符串类型     3.3.1 CHAR和VARCHAR类型     3.3.2 BINARY和VARBINARY类型     3.3.3 ENUM类型     3.3.4 SET类型    3.4 小结   第4章 MySQL中的运算符    4.1 算术运算符    4.2 比较运算符    4.3 逻辑运算符    4.4 位运算符    4.5 运算符的优先级    4.6 小结   第5章 常用函数    5.1 字符串函数    5.2 数值函数    5.3 日期和时间函数    5.4 流程函数    5.5 其他常用函数    5.6 小结   第6章 图形化工具的使用    6.1 MySQLAdministrator     6.1.1 连接管理     6.1.2 健康检查     6.1.3 备份管理     6.1.4 Catalogs    6.2 MySQLQueryBrower    6.3 phpMyAdmin     6.3.1 数据库管理     6.3.2 数据库对象管理     6.3.3 权限管理     6.3.4 导入导出数据    6.4 小结  第2部分 开发篇  第7章 表类型(存储引擎)的选择    7.1 MySQL存储引擎概述    7.2 各种存储引擎的特性     7.2.1 MyISAM     7.2.2 InnoDB     7.2.3 MEMORY     7.2.4 MERGE    7.3 如何选择合适的存储引擎    7.4 小结   第8章 选择合适的数据类型    8.1 CHAR与VARCHAR    8.2 TEXT与BLOB    8.3 浮点数与定点数    8.4 日期类型选择    8.5 小结   第9章 字符集    9.1 字符集概述    9.2 Unicode简述    9.3 汉字及一些常见字符集    9.4 怎样选择合适的字符集    9.5 MySQL支持的字符集简介    9.6 MySQL字符集的设置     9.6.1 服务器字符集和校对规则     9.6.2 数据库字符集和校对规则     9.6.3 表字符集和校对规则     9.6.4 列字符集和校对规则     9.6.5 连接字符集和校对规则    9.7 字符集的修改步骤    9.8 小结   第10章 索引的设计和使用    10.1 索引概述    10.2 设计索引的原则    10.3 BTREE索引与HASH索引    10.4 小结   第11章 视图    11.1 什么是视图    11.2 视图操作     11.2.1 创建或者修改视图     11.2.2 删除视图     11.2.3 查看视图    11.3 小结   第12章 存储过程和函数    12.1 什么是存储过程和函数    12.2 存储过程和函数的相关操作     12.2.1 创建、修改存储过程或者函数     12.2.2 删除存储过程或者函数     12.2.3 查看存储过程或者函数     12.2.4 变量的使用     12.2.5 定义条件和处理     12.2.6 光标的使用     12.2.7 流程控制    12.3 小结   第13章 触发器    13.1 创建触发器    13.2 删除触发器    13.3 查看触发器    13.4 触发器的使用    13.5 小结   第14章 事务控制和锁定语句    14.1 LOCKTABLE和UNLOCKTABLE    14.2 事务控制    14.3 分布式事务的使用     14.3.1 分布式事务的原理     14.3.2 分布式事务的语法     14.3.3 存在的问题    14.4 小结   第15章 SQL中的安全问题    15.1 SQL注入简介    15.2 应用开发中可以采取的应对措施     15.2.1 PrepareStatementBind-variable     15.2.2 使用应用程序提供的转换函数     15.2.3 自己定义函数进行校验    15.3 小结   第16章 SQLMode及相关问题    16.1 MySQLSQLMode简介    16.2 常用的SQLMode    16.3 SQLMode在迁移中如何使用    16.4 小结  第3部分 优化篇  第17章 常用SQL技巧和常见问题    17.1 正则表达式的使用    17.2 巧用RAND()提取随机行    17.3 利用GROUPBY的WITHROLLUP子句做统计    17.4 用BITGROUPFUNCTIONS做统计    17.5 数据库名、表名大小写问题    17.6 使用外键需要注意的问题    17.7 小结   第18章 SQL优化    18.1 优化SQL语句的一般步骤     18.1.1 通过showstatus命令了解各种SQL的执行频率     18.1.2 定位执行效率较低的SQL语句     18.1.3 通过EXPLAIN分析低效SQL的执行计划     18.1.4 确定问题并采取相应的优化措施    18.2 索引问题     18.2.1 索引的存储分类      18.2.2 MySQL如何使用索引     18.2.3 查看索引使用情况    18.3 两个简单实用的优化方法     18.3.1 定期分析表和检查表     18.3.2 定期优化表    18.4 常用SQL的优化     18.4.1 大批量插入数据     18.4.2 优化INSERT语句     18.4.3 优化GROUPBY语句     18.4.4 优化ORDERBY语句     18.4.5 优化嵌套查询     18.4.6 MySQL如何优化OR条件     18.4.7 使用SQL提示    18.5 小结   第19章 优化数据库对象    19.1 优化表的数据类型    19.2 通过拆分提高表的访问效率    19.3 逆规范化    19.4 使用中间表提高统计查询速度    19.5 小结   第20章 锁问题    20.1 MySQL锁概述    20.2 MyISAM表锁     20.2.1 查询表级锁争用情况     20.2.2 MySQL表级锁的锁模式     20.2.3 如何加表锁     20.2.4 并发插入(ConcurrentInserts)     20.2.5 MyISAM的锁调度    20.3 InnoDB锁问题     20.3.1 背景知识     20.3.2 获取InnoDB行锁争用情况     20.3.3 nnoDB的行锁模式及加锁方法     20.3.4 InnoDB行锁实现方式     20.3.5 间隙锁(Next-Key锁)     20.3.6 恢复和复制的需要,对InnoDB锁机制的影响     20.3.7 InnoDB在不同隔离级别下的一致性读及锁的差异     20.3.8 什么时候使用表锁     20.3.9 关于死锁    20.4 小结   第21章 优化MySQLServer    21.1 查看MySQLServer参数    21.2 影响MySQL性能的重要参数     21.2.1 key_buffer_size的设置     21.2.2 table_cache的设置     21.2.3 innodb_buffer_pool_size的设置     21.2.4 innodb_flush_log_at_trx_commit的设置     21.2.5 innodb_additional_mem_pool_size的设置     21.2.6 innodb_lock_wait_timeout的设置     21.2.7 innodb_support_xa的设置     21.2.8 innodb_log_buffer_size的设置     21.2.9 innodb_log_file_size的设置    21.3 小结   第22章 磁盘I/O问题    22.1 使用磁盘阵列     22.1.1 常见RAID级别及其特性     22.1.2 如何选择RAID级别     22.1.3 虚拟文件卷或软RAID    22.2 使用SymbolicLinks分布I/O    22.3 禁止操作系统更新文件的atime属性    22.4 用裸设备(RawDevice)存放InnoDB的共享表空间    22.5 小结   第23章 应用优化    23.1 使用连接池    23.2 减少对MySQL的访问     23.2.1 避免对同一数据做重复检索     23.2.2 使用查询缓存     23.2.3 增加CACHE层    23.3 负载均衡     23.3.1 利用MySQL复制分流查询操作     23.3.2 采用分布式数据库架构    23.4 其他优化措施    23.5 小结  第4部分 管理维护篇  第24章 MySQL高级安装和升级    24.1 Linux/UNIX平台下的安装     24.1.1 安装包比较     24.1.2 安装RPM包     24.1.3 安装二进制包     24.1.4 安装源码包     24.1.5 参数设置方法    24.2 源码包安装的性能考虑     24.2.1 去掉不需要的模块     24.2.2 只选择要使用的字符集     24.2.3 使用静态编译以提高性能    24.3 升级MySQL    24.4 MySQL降级    24.5 小结   第25章 MySQL中的常用工具    25.1 mysql(客户端连接工具)     25.1.1 连接选项     25.1.2 客户端字符集选项     25.1.3 执行选项     25.1.4 格式化选项      25.1.5 错误处理选项    25.2 myisampack(MyISAM表压缩工具)    25.3 mysqladmin(MySQL管理工具)    25.4 mysqlbinlog(日志管理工具)    25.5 mysqlcheck(MyISAM表维护工具)    25.6 mysqldump(数据导出工具)    25.7 mysqlhotcopy(MyISAM表热备份工具)    25.8 mysqlimport(数据导入工具)    25.9 mysqlshow(数据库对象查看工具)    25.10 perror(错误代码查看工具)    25.11 replace(文本替换工具)    25.12 小结   第26章 MySQL日志    26.1 错误日志    26.2 二进制日志     26.2.1 日志的位置和格式     26.2.2 日志的读取     26.2.3 日志的删除     26.2.4 其他选项    26.3 查询日志     26.3.1 日志的位置和格式     26.3.2 日志的读取    26.4 慢查询日志     26.4.1 文件位置和格式     26.4.2 日志的读取     26.4.3 其他选项    26.5 小结   第27章 备份与恢复    27.1 备份/恢复策略    27.2 逻辑备份和恢复     27.2.1 备份     27.2.2 完全恢复     27.2.3 基于时间点恢复     27.2.4 基于位置恢复    27.3 物理备份和恢复     27.3.1 冷备份     27.3.2 热备份    27.4 表的导入导出     27.4.1 导出     27.4.2 导入    27.5 小结   第28章 MySQL权限与安全    28.1 MySQL权限管理     28.1.1 权限系统的工作原理     28.1.2 权限表的存取     28.1.3 账号管理    28.2 MySQL安全问题     28.2.1 操作系统相关的安全问题     28.2.2 数据库相关的安全问题    28.3 其他安全设置选项     28.3.1 old-passwords     28.3.2 safe-user-create     28.3.3 secure-auth     28.3.4 skip-grant-tables     28.3.5 skip-network     28.3.6 skip-show-database    28.4 小结   第29章 MySQL复制    29.1 安装配置    29.2 主要复制启动选项     29.2.1 log-slave-updates     29.2.2 master-connect-retry     29.2.3 read-only     29.2.4 指定复制的数据库或者表     29.2.5 slave-skip-errors    29.3 日常管理维护     29.3.1 查看从服务器状态     29.3.2 主从服务器同步维护     29.3.3 从服务器复制出错的处理     29.3.4 logevententryexceededmax_allowed_packet的处理     29.3.5 多主复制时的自增长变量冲突问题     29.3.6 查看从服务器的复制进度    29.4 切换主从服务器    29.5 小结   第30章 MySQLCluster    30.1 MySQLCluster架构    30.2 MySQLCluster的配置     30.2.1 MySQLCluster的版本支持     30.2.2 管理节点配置步骤     30.2.3 SQL节点和数据节点的配置    30.3 开始使用Cluster     30.3.1 Cluster的启动     30.3.2 Cluster的测试     30.3.3 Cluster的关闭    30.4 维护Cluster     30.4.1 数据备份     30.4.2 数据恢复     30.4.3 日志管理    30.5 小结   第31章 MySQL常见问题和应用技巧    31.1 忘记MySQL的root密码    31.2 如何处理MyISAM存储引擎的表损坏     31.2.1 方法一     31.2.2 方法二    31.3 MyISAM表超过4GB无法访问的问题    31.4 数据目录磁盘空间不足的问题     31.4.1 对于MyISAM存储引擎的表     31.4.2 对于InnoDB存储引擎的表    31.5 DNS反向解析的问题    31.6 mysql.sock丢失后如何连接数据库    31.7 同一台服务器运行多个MySQL数据库    31.8 客户端怎么访问内网数据库    31.9 小结

相关热词 c#创建非模态窗体 c#提取字符串中的数字 c# 扩展无返回类 c#网站如何做预览功能 c# 异步 返回值 c#chart实时曲线图 c# 窗体 隐藏 c#实现终端上下滑动 c# 传递数组 可变参数 c# list 补集