我正在处理一些嵌入式代码,并且正在从头开始编写一些新东西,因此我更愿意坚持使用 uint8_t、int8_t 等类型。
然而,当移植一个函数时:
void functionName(char *data)
到:
void functionName(int8_t *data)
在将文字字符串传递给函数时,我收到编译器警告“在指向具有不同符号的整数类型的指针之间转换”。 (即调用 functionName("put this text in");
时)。
现在,我明白了为什么会发生这种情况,并且这些行只是调试,但我想知道人们认为什么是最合适的处理方式,而不是对每个文字字符串进行类型转换。在实践中,我不认为一揽子类型转换比使用“char”这样可能不明确的类型更安全。
最佳答案
你在这里似乎做错了事。
字符没有被 C 定义为 8 位整数,那么为什么你会选择使用 int8_t
或 uint8_t
来表示字符数据,除非你正在工作使用 UTF-8?
对于 C 的字符串字面量,它们的类型是指向 char
的指针,并且根本不能保证是 8 位。
如果它是 signed
或 unsigned
也没有定义,所以只需使用 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/