可以肯定不是地址的问题。
int i;
unsigned char *pc = (unsigned char *)0x0007d000;
unsigned int *pram = (unsigned int *)0x40000000;
unsigned int *webup = (unsigned int *)0x00003800;
unsigned int *app = (unsigned int *)0x00040000;
unsigned int *uartaddr = (unsigned int *)0x00001000; //当我把这句和上句位置对调后,如下:
int i; //行1
unsigned char *pc = (unsigned char *)0x0007d000; //行2
unsigned int *pram = (unsigned int *)0x40000000; //行3
unsigned int *webup = (unsigned int *)0x00003800; //行4
unsigned int *uartaddr = (unsigned int *)0x00001000; //行5 //这句放上来,反而赋值不成功
unsigned int *app = (unsigned int *)0x00040000; //而这句又赋值成功了
现在还没找到问题,我只好找了个临时解决的办法:
我又定义了一个 没用的变量:
unsigned int *temp = (unsigned int *)0x00003800; //把它放在 行4 的下一行,它不能赋值,但它后面的变量都能正常赋值了。
应该不是编译器的问题,我把优化级别设为level 0一样不行。