web-dev-qa-db-ja.com

関数freeの暗黙的な宣言はc99では無効です

Xcode 5では、次の警告が表示されます。

「関数freeの暗黙の宣言はc99では無効です」

関数free()を使用できない場合、どのようにc構造体を解放する必要がありますか?

19
chrs

<stdlib.h>を含める必要があります。

53

最初に宣言せずに関数を呼び出しているため、コンパイラーは関数を知らないため、この警告が表示されます。

すべての関数は、呼び出す前に宣言する必要があります。Cには「組み込み」関数はありません。

free()が標準で定義されている関数であることは事実ですが、まだ組み込まれていません。プロトタイプが必要です。

どのヘッダーにプロトタイプがあるかを調べるには、「man free」を検索して Linuxマニュアルページ を探してください。上部に近い、それは言う:

#include <stdlib.h>

void *malloc(size_t size);
void free(void *ptr);
void *calloc(size_t nmemb, size_t size);
void *realloc(void *ptr, size_t size);

これは、リストされた関数を使用するために、以下を追加する必要があることを示しています。

#include <stdlib.h>

ソースコードに。

8
unwind