114

mallocコードで使用する場合:

int *x = malloc(sizeof(int));

からこの警告が表示されgccます:

new.c:7: warning: implicit declaration of function ‘malloc’  
new.c:7: warning: incompatible implicit declaration of built-in function ‘malloc’
4

5 に答える 5

227

以下を追加する必要があります。

#include <stdlib.h>

このファイルには、組み込み関数の宣言が含まれていますmalloc。そうしないと、コンパイラは、名前付きの独自の関数を定義したいと考え、次のmalloc理由で警告を表示します。

  1. あなたはそれを明示的に宣言せず
  2. 暗黙的に宣言されたものとは異なる署名を持つその名前の組み込み関数が既に存在します (関数が暗黙的に宣言されている場合、その戻り値と引数の型は であると想定されint、組み込み関数と互換性がありません)。 in malloc、これは a を取り、 asize_tを返しますvoid*)。
于 2009-08-04T23:19:24.360 に答える
30

あなたは行っていません#include <stdlib.h>

于 2009-08-04T23:18:34.067 に答える
16

関数を宣言するヘッダー ファイルを含める必要があります。次に例を示します。

#include <stdlib.h>

このヘッダー ファイルをインクルードしない場合、関数はコンパイラに認識されません。したがって、宣言されていないと見なされます。

于 2009-08-04T23:18:53.537 に答える
10

ヘルプで関数を調べる習慣をつけてください。

C のほとんどのヘルプは、UNIX のマニュアル ページをモデルにしています。

使用:

man malloc

かなり有用な結果が得られます。

グーグルman mallocは私が何を意味するかを示します。

unix では、関連するものについても適切になります。

于 2009-08-04T23:23:27.613 に答える