将铸件解决下面的警告是否安全,或者我可以简单地改变原型来返回u_char
而不是?将铸造一个char/unsigned char是否安全?
警告:返回 'u_char [256]' 从与结果类型的函数 '的char *' 指针为整数类型的具有不同符号之间转换[-Wpointer-SIGN]
char * whatever(unsigned char *text)
{
static u_char retval[256];
int pos = 0;
*retval = 0;
if (!text)
return retval;
for (; *text && (pos < 254); text++, pos++) {
if (*text < 32) {
retval[pos++] = '^';
retval[pos] = *text + 64;
} else if (*text == 127) {
retval[pos++] = '^';
retval[pos] = '?';
} else
retval[pos] = *text;
}
retval[pos] = 0;
return retval;
}
我也可以接受其他可能性。
我敢说每个人*都会假设文本是'const unsigned char *'。对于很多人来说,差异并不重要,只要手中的实现将'char'视为签名而不是无符号类型即可。 –