2016-11-21 12 views
-1

私は現在redisソースコードを参照しています。this行を見つけました(私は思う)は前方宣言です(thisも参照)。私は専門家でも何者でもないが、evictionPoolEntryが宣言されているが使用されていないことは奇妙に思える。理由は何ですか?ここで言われているコードブロック:構造体を使用せずに構造体の前方宣言

server.h:

struct evictionPoolEntry; /* Defined in evict.c */ 

evict.c:

struct evictionPoolEntry { 
    unsigned long long idle; /* Object idle time (inverse frequency for LFU) */ 
    sds key;     /* Key name. */ 
    sds cached;     /* Cached SDS object for key name. */ 
    int dbid;     /* Key DB number. */ 
}; 

ありがとう!

+1

リンク先ではなく実際のコードを掲載してください。 –

+0

'struct evictionPoolEntry'はおそらくserver.h自体に含まれていないserver.hを含むファイルで使われています –

+0

これは私が思ったものですが、grepはevict.cでのみ使用されていることを示しています.h) – alexpeits

答えて

0

ファイルへのポインタをグローバルに宣言するために、evict.c: static struct evictionPoolEntry *EvictionPoolLRU;の行60で使用されています。ポインタは、int freeMemoryIfNeeded(void)およびvoid evictionPoolAlloc(void)関数で使用されます。

+0

これは、型をヘッダーで宣言する必要がある理由ではありません。実際、変数はファイルの外側ではアクセスできないため、ヘッダーに型を公開する自明の理由はありません。 –