weixin_45837947 2024-03-20 11:00 采纳率: 0%
浏览 5

__far关键字移植到32位的问题

如何解决这个编译问题。并且保持和原来的数据一致。

img

            unsigned char __far *fpoint;
            unsigned short flen;
            unsigned short addr;
            unsigned char i;
            
            addr = pd[11];
            addr = (addr<<8)|pd[10];

            flen = pd[12];

            fpoint = (unsigned char __far *)addr;
            
            pd[0] = 0x68;
            memcpy(&pd[1],myaddr,6);
            pd[7] = 0x68;
            pd[8] = 0x8A;
            len = 13;
            for(i=0;i<flen;i++)
            {
                pd[len++] = fpoint[i];
            }

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-20 11:05
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题描述:如何解决编译错误,并且保持与原数据一致? 问题分析:首先要找出编译错误的原因,根据代码中出现的符号和错误提示,可以判断该代码在使用指针时出现了错误。在使用指针时,需要注意是否越界或者指向的地址是否合法,否则会导致编译出错。 解决方案:根据错误提示,可以判断出错误发生在使用指针时,需要检查指针指向的地址是否越界或者是否合法。例如,可以使用指针的运算符(*和&)来确保指针所指向的内存地址有效。 另外,要保持与原数据一致,需要保证代码的修改不会改变原有数据的结构和含义。可以在修改代码之前备份数据,并在进行修改后测试代码,确保修改后的代码能够正确地处理数据。 代码示例: 示例代码: unsigned char __far *fpoint; unsigned short flen; unsigned short addr; unsigned char i; addr = pd[11]; addr = (addr<<8)|pd[10]; flen = pd[12]; fpoint = (unsigned char __far *)addr; pd[0] = 0x68; memcpy(&pd[1],myaddr,6); pd[7] = 0x68; pd[8] = 0x8A; len = 13; for(i=0;i= 0xFFFF) { // 处理指针越界或者无效的情况 break; } pd[len++] = *(fpoint+i); } 在代码中添加了检查指针指向的内存地址是否越界或者是否合法的代码,确保修改后的代码仍然与原来的数据结构和含义一致。
    评论

报告相同问题?

问题事件

  • 创建了问题 3月20日

悬赏问题

  • ¥300 寻抓云闪付tn组成网页付款链接
  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题