[英]Typecasting an integer to a character pointer in C
我有一个函数uint8_t EE_Write(uint8_t addr, uint8_t len, uint8_t * buf)
,它带有指向将要写入内存的某些数据的指针,以及一个我想给它的uint16_t myword
。 基础的
EE_Write(0,sizeof(myword),&myword);
给我编译器警告“间接指向不同类型('unsigned int * const'而不是'unsigned char * const')'”即使我将单词(int)转换为字节(char),我仍然收到完全相同的警告(并没有用括号括起来的分组数量)。
EE_Write(0,sizeof(myword),&(uint8_t)myword);
警告通过联合消失,但是必须将其写入另一个变量只是为了使编译器满意,这是愚蠢的。
union catbyte {
uint16_t w;
uint8_t b[2];
};
union catbyte mybytes;
mybytes.w = myword;
EE_Write(0,sizeof(myword),mybytes.b);
您可以这样做:
EE_Write(0,sizeof(myword),(uint8_t *)&myword);
但是,执行此操作的首选方法是将函数定义为采用空指针,例如:
uint8_t EE_Write(uint8_t addr, uint8_t len, const void * buf);
然后,编译器不应针对传递的任何指针类型警告您。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.