3
// set all values in the hash table to null
for(int i = 0; i < HASH_SIZE; i++)
{
    hashtable[i] = NULL;
}

hashtable [i]に応答して、このエラーメッセージが表示され続けます。

代入は、キャストなしでポインタから整数を作成します[-Werror]

なんで?

4

2 に答える 2

7

hashtableが整数の配列である場合は、整数をhashtable[i]期待しNULL、ポインタです。

したがって、(キャストなしで) 整数変数にポインター値を代入しようとしています。これは通常、単なる警告ですが、-Werrorすべての警告がエラーに変わるためです。

0の代わりに使用してNULLください。

于 2012-07-28T02:40:15.367 に答える
1

NULL は次のように定義され(void*)0ますstddef.h

#ifndef _LINUX_STDDEF_H
#define _LINUX_STDDEF_H

#undef NULL
#if defined(__cplusplus)
#define NULL 0
#else
#define NULL ((void *)0)
#endif

#endif

ハッシュテーブルが整数配列の場合、

#include <stdio.h>
#define HASH_SIZE 100
int main()
{
int i = 0, hashtable[HASH_SIZE];
for(i = 0; i < HASH_SIZE; i++)
{
    hashtable[i] = NULL;
}
return 0;
}

これwarning: assignment makes integer from pointer without a cast が表示されます。

于 2012-07-28T11:56:22.413 に答える