"BIO_flush (b64);"줄에 "경고 : 계산 된 값이 사용되지 않았습니다"라는 경고 메시지가 나타나는 이유는 무엇입니까? 어떻게 제거 할 수 있습니까? 또한경고 : 계산 된 값이 사용되지 않습니다.
(void) BIO_flush(b64);
당신이 -Wno-unused-value
플래그를 추가하여 alltogether이 경고를 해제하도록 선택할 수 있습니다
unsigned char *my_base64(unsigned char *input, int length)
{
BIO *bmem, *b64;
BUF_MEM *bptr;
b64 = BIO_new(BIO_f_base64());
bmem = BIO_new(BIO_s_mem());
b64 = BIO_push(b64, bmem);
BIO_write(b64, input, length);
BIO_flush(b64);
BIO_get_mem_ptr(b64, &bptr);
unsigned char *buff = (unsigned char *)malloc(bptr->length+1);
memcpy(buff, bptr->data, bptr->length-1);
buff[bptr->length-1] = 0;
BIO_free_all(b64);
return buff;
}
'BIO_flush()'는 아마도 무언가를 반환하겠다고 선언되었지만 결과를 아무 곳에 나 저장하거나 표현식에 사용하지 않습니다. – jrok
BIO_flush()는 값을 계산하는 매크로로 선언됩니다. 결과가 변수에 할당되지 않았으므로이 경고가 표시됩니다. BIO_flush가 실제 함수라면이 경고가 발생하지 않을 것이라고 생각합니다. 나는 경고를 피하기 위해 - 임시로 할당 할 필요가있다. –
'BIO_flush'는 쉼표 연산자가있는 표현식으로 확장되는 매크로 일 수도있다. 쉼표 연산자의 왼쪽에는 아무런 부작용이 없다. 'BIO_flush'의 정의를 보지 않고서는 모두 짐작할 만합니다. – celtschk