3

私はhiredisが初めてで、v0.13を使用しています。オブジェクトhiredis.hを扱うの API 関数はすべて を使用していることに気付きました。例えば、redisReply*void*

void *redisCommand(redisContext *c, const char *format, ...);

redisReply*オブジェクト (またはNULL)を返します。

int redisGetReply(redisContext *c, void **reply);

redisReply*を通じてオブジェクトを出力しますreply

void freeReplyObject(void *reply);

コードのコメントによると、「hiredis がデフォルトで返す返信オブジェクトを解放する関数」です。</p>

ここで何が欠けていますか? これらの関数がvoid*代わりに を使用するのはなぜredisReply*ですか?

4

2 に答える 2

1

ジェネリック関数は、リスクや移植性なしに void * および void * への任意のポインターを同じポインター (char ポインター型と同じ) にキャストできるため、この方法で記述されることがよくあります。また、コンパイラの警告も表示されません。

于 2019-06-21T13:32:54.653 に答える