將鑄件解決下面的警告是否安全,或者我可以簡單地改變原型來返回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'視爲簽名而不是無符號類型即可。 –