一次疏忽导致的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值明显不是一个 ...
随机推荐
- @override的意思
@Override是Java5的元数据,自动加上去的一个标志,告诉你说下面这个方法是从父类/接口 继承过来的,需要你重写一次,这样就可以方便你阅读,也不怕会忘记 @Override是伪代码,表示重写( ...
- Windows 10下通过蓝牙连接iPhone个人热点进行共享上网
出处:qiuyi21.cnblogs.com 1.iPhone开启个人热点 在iPhone中打开蓝牙,然后进入“个人热点”并打开开关,如果提示热点发射方式请选择蓝牙那项,然后停留在“个人热点”界面并且 ...
- html5手写签名
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta co ...
- 利用nodejs的cheerio抓取网站数据
/*引入模块*/ var http = require('http') var url = 'http://www.cnblogs.com/txxt' var cheerio = require('c ...
- python 实现 斐波那契数列
#!usr/bin/python#_*_coding=utf-8_*_ def fin(n): li=[0,1] for i in range(2,n): li.append(li[-1]+li[-2 ...
- require.js 入门笔记
网站越来越庞大,JS也是越写越多. 当所有的JS 都集中在 HTML的 head 部分时,网页加载变得很慢,很多的 JS代码也并不是全都适用在当前的页面,造成了代码的冗余度非常高. 而且长长的JS代码 ...
- html显示时间
<html> <head> <script type="text/javascript"> function time() { var time ...
- IOS 使用KBMMW 访问JAVA 服务
废话少说,如何使用KBMMW 做个过渡,使IOS 可以使用JAVA 的服务? 其实KBMMW 本身就要java service 的服务,但是为了把这个问题说清楚,我手工做一个例子. 首先,要使用JAV ...
- AJAX04 JQ的AJAX
一.jQuery中的Ajax 1.jQuery为我们提供了更强大的Ajax封装 $.ajax({}) 可配置方式发起Ajax请求 $.get() 以GET方式发起Ajax请求 $.post() 以PO ...
- web_submit_data函数上传图片
web_submit_data函数上传图片 通常loadrunner上传下载文件脚本不能通过录制来实现,录制上传脚本回放过程会出问题,主要原因在于上传文件的路径,了解了上传文件的原理之后,可以手工完成 ...