我注意到我使用了几种字符串方法,比如
strcpy(userAmount, pch);
在unsigned char*
缓冲区上,没有投射。例如,这些变量定义为
u8 * pch = NULL;
u8 userAmount[255] = {0};
到目前为止一切正常。
这是预期的行为吗?我应该继续这样使用吗?
到目前为止缓存存储的ASCII文本,将来可能会保存UTF8 - 在这种情况下情况会有所不同(例如,在转换,缓冲区类型方面)吗?
答案 0 :(得分:0)
为什么在标准类型(u8
)会使用某些非标准类型(char
?)?
但是,你的方法应该没问题。
来自C11-Standard(我的斜体):
7.24.1字符串函数约定
头文件string.h声明了一个类型和几个函数,并定义了一个 宏用于操作字符类型的数组和其他被视为数组的对象 字符类型。
[...]
对于本子条款中的所有函数,每个字符都应被解释为具有类型 unsigned char (因此每个可能的对象表示都是有效的,并且有一个 不同的价值)。