c++ - int8_t 和 char : converts between pointers to integer types with different sign - but it doesn't

标签 c++ c char embedded

我正在处理一些嵌入式代码,并且正在从头开始编写一些新东西,因此我更愿意坚持使用 uint8_t、int8_t 等类型。

然而,当移植一个函数时:

void functionName(char *data)

到:

void functionName(int8_t *data)

在将文字字符串传递给函数时,我收到编译器警告“在指向具有不同符号的整数类型的指针之间转换”。 (即调用 functionName("put this text in"); 时)。

现在,我明白了为什么会发生这种情况,并且这些行只是调试,但我想知道人们认为什么是最合适的处理方式,而不是对每个文字字符串进行类型转换。在实践中,我不认为一揽子类型转换比使用“char”这样可能不明确的类型更安全。

最佳答案

你在这里似乎做错了事。

字符没有被 C 定义为 8 位整数,那么为什么你会选择使用 int8_tuint8_t 来表示字符数据,除非你正在工作使用 UTF-8?

对于 C 的字符串字面量,它们的类型是指向 char 的指针,并且根本不能保证是 8 位。

如果它是 signedunsigned 也没有定义,所以只需使用 const char * 作为字符串文字。

关于c++ - int8_t 和 char : converts between pointers to integer types with different sign - but it doesn't,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24012940/

相关文章:

c++ - T(x) 是否被视为类型转换?

c++ - 如何在 gtk+ c 中的回调之间进行通信

c - 如何用c语言编写一个简单的程序来将克转换为毫克,反之亦然

c++ - 如何将 std::string 转换为 const char* 或 char*

将数组的十六进制值转换为另一个数组的字符串值

c++ - 视觉 C++ : InvokeHelper() function

python - 平衡树中的节点数

c++ - 将数组字符串转换为字符

使用用户输入控制 POSIX 线程

c++ - 安全地将字节写入流