一次疏忽导致的bug
NBB_PUT_SHORT 这个宏是按char* 类型算指针的
实际工作中,没有注意这一点,输入指针类型 强转为了 SHORT*
导致 填充的内容错误 这是第一次在工作中遇到 指针类型相关的问题
值得记录一笔
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h> typedef unsigned char NBB_BYTE; /* 8 bits */
typedef signed char NBB_CHAR; /* */
typedef signed short NBB_SHORT; /* 2 byte signed integer */
typedef unsigned short NBB_USHORT; /* 2 byte unsigned integer */
typedef signed long NBB_LONG; /* 4 byte signed integer */
typedef unsigned long NBB_ULONG; /* 4 byte unsigned integer */
typedef signed int NBB_INT; /* >= 2 byte signed integer (machine */
/* word) */
typedef unsigned int NBB_UINT; /* >= 2 byte unsigned integer */
/* machine word) */
typedef int NBB_BOOL; /* boolean */
typedef void NBB_VOID; /* void if supported, char otherwise */ typedef NBB_BYTE* BFD_PUC_ALARM_INFO; BFD_PUC_ALARM_INFO g_pucAlarmInfo; /* ״̬Éϱ¨ÐÒéÕ» */ #define NBB_PUT_SHORT(B, S) \
(B)[] = (unsigned char)((S) >> ); \
(B)[] = (unsigned char)((S) & 0xFF) void init()
{
g_pucAlarmInfo = (BFD_PUC_ALARM_INFO) malloc();
memset(g_pucAlarmInfo, , );
}
int main()
{
NBB_BYTE ucLocalSlot = ;
NBB_BYTE ucMainSlot = ;/* Ö÷ÓÃÖ÷¿ØÅ̵IJÛλºÅ */
NBB_BYTE *pucInfoTmp = NULL;
NBB_USHORT *pusData = NULL;
NBB_ULONG ulDataLenth = ; init(); pucInfoTmp = g_pucAlarmInfo + ;
pusData = (char *)pucInfoTmp;
*pusData = 0x0001;
#if 0
NBB_PUT_SHORT(pusData, 0x0001); /* ÌîдÀàÐÍ */
#else
pusData[] =(unsigned char)( 0x0001 >> );
pusData[] =(unsigned char)( 0x0001 & 0xff); #endif
pucInfoTmp = pucInfoTmp + ;
return ;
}
一次疏忽导致的bug的更多相关文章
- 对 Python 语法不够了解导致的 bug
对 Python 语法不够了解导致的 bug. `in` '20' in '11264,6144,4096,3072,2048,1024,300,30' Out[7]: True a_list = ' ...
- MySQL中char(36)被认为是GUID导致的BUG及解决方案
MySQL中char(36)被认为是GUID导致的BUG及解决方案 有时候在使用Toad或在程序中,偶尔会遇到如下的错误: System.FormatException GUID 应包含带 4 个短划 ...
- 请慢慢移动……由于操作快慢导致的bug
最近的工作中,遇到一个由于操作快慢不同导致的bug,原因是,操作慢的时候程序接收到了停止操作,继续处理正确,而快速操作的时候程序来不及处理操作停止的动作,导致需要传入的数据值已经改变,程序报错.这种缺 ...
- 基于antd封装一个高可用form组件 减少cv代码导致的bug
引言 在开发中台过程中 我们的原型中有很多表单,antd有表单组件,但是粒度比较细,就单纯组件而言,无可厚非,但是在开发过程中,可能会造成代码不够聚合,有些表单公共逻辑无法提取,copy paste比 ...
- macOS 升级后导致 dart bug
macOS 升级后导致 dart bug macOS 10.15.5 $ demo_app git:(master) flutter doctor # /Users/xgqfrms-mbp/Docum ...
- 在docker以FPM-PHP运行php,慢日志导致的BUG分析
问题描述: 最近将IOS书城容器化,切换流量后.正常的业务测试了一般,都没发现问题.线上的错误监控系统也没有报警,以为迁移工作又告一段落了,暗暗的松了一口气.紧接着,报警邮件来了,查看发现是一个苹果支 ...
- Java 一个关于使用&&导致的BUG
二维数据track的定义: byte[][] track = new byte[10][10]; 本意:判断track[trackY][trackX]的值是否为零,以及trackX是否小于10. 带B ...
- 高并发压力下导致数据库bug
环境信息: linux 6.1 + oracle11.2.0.3 RAC 问题现象: 学校晚上6点选课,人数大概有3000,7点时,数据库报错如下(数据库到6点多还是可以连接的),数据库hu ...
- 优化代码,引发了早期缺陷导致新bug
早期系统有个缺陷,调用js时少提交一个参数,导致该参数一直是undefined,但是不会引起bug. 对系统进行优化后,这个参数变成了必要的,然后代码一直会走else,undefined值明显不是一个 ...
随机推荐
- opencv 震撼你的视觉-------基础篇
opencv 最近在做一个钓鱼网站的项目中用到了一个叫opencv的玩意儿,以前没接触过.感觉挺新鲜的,而且项目中要用,所以就问了一下度娘(是想Google一下的,显得高大上and专业一点,但是英语水 ...
- 500lines项目简介
"500行或更少" "What I cannot create, I do not understand." -- Richard Feynman <50 ...
- [转] ACM中国国家集训队论文集目录(1999-2009)
国家集训队1999论文集 陈宏:<数据结构的选择与算法效率——从IOI98试题PICTURE谈起>来煜坤:<把握本质,灵活运用——动态规划的深入探讨>齐鑫:<搜索方法中的 ...
- 解析json
String json = "{\"elements\":[{\"distance\":{\"text\":\"1364 ...
- EBS中后台AP发票审批脚本
Declare l_Hold_Count Number; l_Funds_Code Varchar2(30); l_Approve_Status Varchar2(120); B ...
- R12将银行和分行都使用TCA管理
R12将银行和分行都使用TCA管理,后台保存在HZ_PARTIES . 银行帐号:如果是付款或者是收款(本公司的帐号,内部帐号),都保存在ce_bank_accounts,ce_bank_acct_u ...
- C语言隐形密码输入
今天费了老大的劲,终于做出来了!虽然简单,但也是自己的心血,分享一下! #include<stdio.h> #include<conio.h> int main(){ char ...
- uicollectionview registerclass vs registernib
当cell是用代码实现的时候用registerclass,当cell是用xib文件实现的时候用registernib
- struts2.3.4,jar包必须添加完整
- callback转Promise
环境: nodejs - v6.2.0 const fs = require('fs'); let Promise = require('bluebird'); let readSync = fun ...