コンパイルエラー
Posted: 2010年11月15日(月) 23:22
ファイル名: In function 'base64Encode': ファイル名:51: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness ファイル名: In function 'main': ファイル名:372: warning: pointer targets in passing argument 1 of 'base64Encode' differ in signedness ファイル名:372: warning: pointer targets in assignment differ in signedness
↑このようなコンパイルエラーになります。
下記ソース。
unsigned char *base64Encode(unsigned char *source)
{
unsigned char *result = NULL;
unsigned char buf1,buf2,buf3;
unsigned char ind1,ind2,ind3,ind4;
int i,j;
int size;
size = sizeof(source[0]) * strlen(source);
result = calloc(sizeof(char),(size*2)+1);
for(i=0, j=0; i<size; i+=3, j+=4)
{
buf1 = (i < size - 0) ? *(source + i + 0) : '\0';
buf2 = (i < size - 1) ? *(source + i + 1) : '\0';
buf3 = (i < size - 2) ? *(source + i + 2) : '\0';
ind1 = (buf1 >> 2);// 2bit右シフト
ind2 = (buf1 & 0x03) << 4 | (buf2 >> 4);
ind3 = (buf2 & 0x0f) << 2 | (buf3 >> 6);
ind4 = (buf3 & 0x3f);
*(result + j + 0) = BASE64[ind1];
*(result + j + 1) = BASE64[ind2];
*(result + j + 2) = ( i < size - 1 ) ? BASE64[ind3] : '=';// 端数は=に
*(result + j + 3) = ( i < size - 2 ) ? BASE64[ind4] : '=';
}
return(result);
}
int main(void)
{
省略
log2 = base64Encode(log);
省略
}
このソースだと51行目は
size = sizeof(source[0]) * strlen(source);
372行目は
log2 = base64Encode(log);
ということになります。
このエラーはどういう意味でしょうか?
↑このようなコンパイルエラーになります。
下記ソース。
unsigned char *base64Encode(unsigned char *source)
{
unsigned char *result = NULL;
unsigned char buf1,buf2,buf3;
unsigned char ind1,ind2,ind3,ind4;
int i,j;
int size;
size = sizeof(source[0]) * strlen(source);
result = calloc(sizeof(char),(size*2)+1);
for(i=0, j=0; i<size; i+=3, j+=4)
{
buf1 = (i < size - 0) ? *(source + i + 0) : '\0';
buf2 = (i < size - 1) ? *(source + i + 1) : '\0';
buf3 = (i < size - 2) ? *(source + i + 2) : '\0';
ind1 = (buf1 >> 2);// 2bit右シフト
ind2 = (buf1 & 0x03) << 4 | (buf2 >> 4);
ind3 = (buf2 & 0x0f) << 2 | (buf3 >> 6);
ind4 = (buf3 & 0x3f);
*(result + j + 0) = BASE64[ind1];
*(result + j + 1) = BASE64[ind2];
*(result + j + 2) = ( i < size - 1 ) ? BASE64[ind3] : '=';// 端数は=に
*(result + j + 3) = ( i < size - 2 ) ? BASE64[ind4] : '=';
}
return(result);
}
int main(void)
{
省略
log2 = base64Encode(log);
省略
}
このソースだと51行目は
size = sizeof(source[0]) * strlen(source);
372行目は
log2 = base64Encode(log);
ということになります。
このエラーはどういう意味でしょうか?