繁体   English   中英

将整数类型转换为C中的字符指针

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM