web-dev-qa-db-ja.com

mallocを使用するたびに警告が表示されるのはなぜですか?

コードで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’
108
Kredns

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

#include <stdlib.h>

このファイルには、組み込み関数mallocの宣言が含まれています。そうしないと、コンパイラはmallocという名前の独自の関数を定義する必要があると判断し、次の理由で警告します。

  1. 明示的に宣言しませんand
  2. 暗黙的に宣言されたものとは異なるシグネチャを持つ、その名前の組み込み関数が既に存在します(関数が暗黙的に宣言された場合、その戻り値と引数の型はintであると想定されます。組み込みのmallocと互換性があり、size_tを取り、void*を返します。
221
sepp2k

まだ行っていません#include <stdlib.h>

30
chaos

たとえば、関数を宣言するヘッダーファイルを含める必要があります。

#include <stdlib.h>

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

16
andri

ヘルプで関数を調べる習慣をつけます。

cのほとんどのヘルプは、UNIXのマニュアルページでモデル化されています。

男malloc

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

googling man mallocは、私が何を意味するかを示します。

もちろん、Unixでは、関連することに対して適切な情報も得られます。

10
Tim Williscroft