#define宏定义形式的函数导致的bug

定义了一个宏定义形式的"函数":

#define  SUM8(YY)\

{\

     int Y = YY>>2;\

  ...\

}

然后使用的时候,传入了一个同名的变量Y:

int  Y = Ywin[x];

SUM8(Y)

本意是想展开成int Y = Ywin[x]>>2;

但实际上#define只是把参数名(YY)替换,与函数形式不同,其实展开的结果变成了:

int Y = Ywin[x];

{

int Y = Y>>2;//仅仅把YY替换成参数Y

}

那么 int Y = Y>>2;这句是先定义局部变量Y,再等于自己右移两位。

以后使用#define形式的"函数"必须格外小心。

 

转载于:https://www.cnblogs.com/mlj318/p/6141248.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255812.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】——BN层(batch normalization)

目录 一、“Internal Covariate Shift”问题 二、BatchNorm的本质思想 两个参数r和β的意义——精髓所在 三、训练阶段如何做BatchNorm 四、BatchNorm的推理(Inference)过程 五、BatchNorm的好处 一般使用在卷积层后、激活层前 Batch Normalization作为最近一年来DL的重要…

JAXB vs XStream

2019独角兽企业重金招聘Python工程师标准>>> JAXB vs XStream 博客分类: java JAXB vs XStream 这两东东本质上是有差别的,JAXB称为OX binding工具,XStream应该算序列化工具,但OX binding工具也会marshall和unmarsha…

ABB 机器人 DRVIO_1通信报警

ABB 机器人DRVIO_1通信报警 2014.06.13 ABB1600弧焊机器人,从A地搬运到B地,到达B地后,机器人上电,报DRVIO_1通信故障,机器人进入故障停止模式。 DRVIO_1为LOCAL_GENERIC类型的ABB内部LOCAL总线类型的单元实例。 故障…

S2SH CRUD 整合

S2SH CRUD 整合 采用的框架 Struts2Spring4Hbiernate4. 目录结构 : EmployeeAction: 1 package com.xx.ssh.actions;2 3 import java.io.ByteArrayInputStream;4 import java.io.InputStream;5 import java.io.UnsupportedEncodingException;6 import java.util.…

ABB 机器人 添加多任务

首先,需要启用多任务选项的控制器。 要做到这一点,创建一个新的机器人控制器RobotStudio站 - >选择机器人(控制器菜单) - >.................. - >系统生成器 - >选择控制器 - >修改...下一页 - >下一步 - >…

分享12306抢票心得-终极秒杀思路篇

12306抢票的关键拼的就是整点出票的速度,快的几秒钟,慢的几分钟,本文提供终极抢票攻略,通过多线程扫描上万个CDN,来大幅度提升出票速度。准备一:需要了解CDN和切站的机制,请参考:分享…

JVM内幕:Java虚拟机详解

为什么80%的码农都做不了架构师?>>> 这篇文章解释了Java 虚拟机(JVM)的内部架构。下图显示了遵守 Java SE 7 规范的典型的 JVM 核心内部组件。 上图显示的组件分两个章节解释。第一章讨论针对每个线程创建的组件,第二章…

ABB机器人 系统参数配置

系统参数用于定义系统配置并在出厂时根据客户的需要定义。 可使用 FlexPendant 或 RobotStudio Online 编辑系统参数。 此步骤介绍如何查看 系统参数配置。 操作 : 1. 在 ABB 菜单上,点击控制面板。 2. 点击配置。显示选定主题的可用类型列表。 3. 点…

四则运算2开发简介

四则运算2在四则运算1的基础之上,又添加了新的功能,但是我觉得四则运算2的难度比四则运算1增大了很多,我在编程的过程中,遇到的最大难度就是不知该如何更好的融合各个功能之间的关系。 写到现在,四则运算2主要实现了以…

ABB机器人的 备份与恢复

保存内容 备份功能可保存上下文中的所有系统参数、系统模块和程序模块。 备份内容 数据保存于用户指定的目录中。 默认路径可加以设置。 目录分为四个子目录:Backinfo、Home、Rapid 和 Syspar。 System.xml 也保存于包含用户设置的 ../backup (根…

【深度学习】——物体检测细节处理(NMS、样本不均衡、遮挡物体)

目录 一、候选框大量重叠问题 1、NMS核心思想 2、 步骤: 3、缺陷 4、改进 1)soft NMS——衰减的方式来减小预测框的分类得分 2)softer nms——增加了位置置信度 二、样本不平衡问题 1、不平滑的来源(3方面) 1&a…

第6章 循环结构

循环语句: 可以让一部分代码,反复执行 1.1 循环语句while while循环: 编写格式:while(条件){ 循环体 } 条件: 当条件是true,就执行循环体,执行完循环体后 程序再次执行while中的条件,如果条件还是true,继续执行循环体 直到条件是false的时候,循环就结束 public class WhileDem…

MongoDB复制集技术

为什么使用MongogDB复制集技术? mysql中:一主一从,一主多从结构存在的问题 1、 fileover(故障转移)a) 选主投票b) 切换 2、 是否对就用透明化 3、 数据补偿的问题a) 两阶段数据补偿 4、 解决方法 mysql中使用MHAVIP b…

Linux文件系统的实现 (图文并茂,比较好)

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! Linux文件管理从用户的层面介绍了Linux管理文件的方式。Linux有一个树状结构来组织文件。树的顶端为根目录(/),节点为目录&#xff0…

ROS探索总结(一)——ROS简介

随着机器人领域的快速发展和复杂化,代码的复用性和模块化的需求原来越强烈,而已有的开源机器人系统又不能很好的适应需求。2010年Willow Garage公司发布了开源机器人操作系统ROS(robot operating system),很快在机器人…

利用union判断系统的大小端

int checkCPUendian()//返回1,为小端;反之,为大端; { union{ unsigned int a; unsigned char b; }c; c.a 1; return 1 c.b; }大端模式(Big-endian),是指数据的高字节保存在内存的低地址中,而数据…

ROS探索总结(二)——ROS总体框架

一、 总体结构 根据ROS系统代码的维护者和分布来标示,主要有两大部分:(1)main:核心部分,主要由Willow Garage公司和一些开发者设计、提供以及维护。它提供了一些分布式计算的基本工具,以及整个…

【深度学习】——利用pytorch搭建一个完整的深度学习项目(构建模型、加载数据集、参数配置、训练、模型保存、预测)

目录 一、深度学习项目的基本构成 二、实战(猫狗分类) 1、数据集下载 2、dataset.py文件 3、model.py 4、config.py 5、predict.py 一、深度学习项目的基本构成 一个深度学习模型一般包含以下几个文件: datasets文件夹:存放…

GUI登录界面

在这次的作业中,我先使用单选按钮,输入框,复选框设计了一个简单地登录界面。接着我使用了MouseListener将登陆按钮与下一个“查询界面”连接起来。最后我使用了我们本周所学的JFrame框架与事件处理机制设计了一个简单地界面。我所设计的登录界…

浅谈ROS操作系统及其应用趋势

ROS操作系统是最先由斯坦福开发的开源机器人操作系统,目前由willowgarage公司开发和维护,相关的开发社区也很成熟( http://www.ros.org , http://answers.ros.org, http://www.willowgarage.com), 经过几年的发展API也逐渐稳定&a…