「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が実際の関数であれば、この警告は発生しないと思います。私は、警告を回避すると思います。-Wallには、一時的に割り当てる必要があります。 –
'BIO_flush'はカンマ演算子を持つ式に展開するマクロでもかまいません。コンマ演算子の左辺には副作用がありません。 'BIO_flush'の定義を見ることなく、すべてのことがblingの推測です。 – celtschk