|
我在用lpc1788 用一个结构体指针去读一个数据缓冲区时,遇到一下问题。
先上代码,此代码用c-free编译通过在pc机上运行,遇到同样的错误。
#include "stdio.h"
#include <stdlib.h>
#include <string.h>
#ifndef UINT8
typedef unsigned char UINT8;
#endif
#ifndef UINT16
typedef unsigned short UINT16;
#endif
UINT8 buf[100];
typedef struct kUSB{
UINT8 bLength;
UINT16 bcdHID;
UINT8 bCountryCode;
UINT8 bNumDescriptors;
UINT16 bDescriptType;
UINT8 wDescriptorLength;
}USB2;
#define HID_Dev1 ((USB2*)buf)
int main()
{
char ss[100];
UINT8 kk;
unsigned char com[8];
int i;
for(i=0;i<90;i++)
buf = i;
printf("%X\n", HID_Dev1->bLength);
printf("%X\n", HID_Dev1->bcdHID);
}
1.先将buf赋值,buf[0] =0, buf[1] = 1, buf[2]=2;
2.在输出HID_Dev1->bLength时 为0,没有问题。
但是在输出HID_Dev1->bcdHID时,按说应该是0x0201, 但是实际输出的是0x0302
如果将bcdHID定义为32位,则输出0x07060504
都是按偶地址输出的。
这是什么原因呢,有没有解决方法,请大神指教一下。
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。
如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》
|