sky*_*guy 3 c casting type-conversion char uint8t
我使用Atmel Studio在C语言编程(对于那些不熟悉它的人来说,它用于编程到arduino等微控制器.你不能简单地打印,你必须将数据串行发送到终端等应用程序.)
我到目前为止:
uint8_t * stackHolder;
char buffer[128];
stackHolder = &buffer[127];
Run Code Online (Sandbox Code Playgroud)
让我们说地址buffer[127]恰好是0x207.我可以看到的值stackHolder是0x207使用调试器.我有一个功能,需要char *和打印.所以我的问题是如何将其转换uint8_t * stackHolder成一个char *所以我可以将它传递给我的打印功能?
我怎样才能转换
uint8_t * stackHolder为char *?
通过铸造:
print((char*) stackHolder);
Run Code Online (Sandbox Code Playgroud)
我有一个需要 char * 的方法
建议尽量减少对一个位置的强制转换以实现目标并保留函数签名类型检查。创建一个带有强制转换的包装函数。
// OP's original function
extern void skyleguy_Print(char *);
void skyleguy_Print_u8(uint8_t *s) {
skyleguy_Print((char *) s);
}
Run Code Online (Sandbox Code Playgroud)