C11/C17:将 char* 显式转换为 uint8_t* 会导致 -Wpointer-sign 警告

问题描述 投票:0回答:1

所以我收到这个警告

警告:将“char[6]”传递给“uint8_t *”类型的参数(又名“unsigned char *”)会在指针之间转换为整数类型,其中一个是 唯一的普通“char”类型,另一个不是 [-Wpointer-sign]

编译以下调用

void my_func(uint8_t *)
函数的代码:

my_func(UINT8_C("world"));

UINT8_C
来自
stdlib.h

IIRC使用时也发生同样的事情

my_func((uint8_t)("world"));

我本以为显式强制转换会消除警告,为什么不呢?

c llvm
1个回答
0
投票

根据编译器和设置,char 可能有符号或无符号。您可能想使用

clang -funsigned-char

© www.soinside.com 2019 - 2024. All rights reserved.