プロが教えるわが家の防犯対策術!

#include<stdio.h>

int main(void){
int n,i;
int* array;

puts("n=?");
scanf("%d",&n);
array = (int*)malloc(sizeof(int) * n);

for(i=0;i<n;i++)
*(array+i) = i;
for(i=0;i<n;i++)
printf("%d ",*(array+i));
puts("");

return 0;
}

C言語で、上述のプログラムをコンパイルしたところ、
9: warning: incompatible implicit declaration of built-in function ‘malloc’
と警告がでます。
./a.outで普通に実行できるのですが、
警告がでるということは、もっと正しいやり方があるということでしょうか?

A 回答 (2件)

そのまんま訳すと


「組み込み関数であるmallocの暗黙の宣言と一致してません」…です。
ですがこの場合、mallocの関数の宣言がないよと言ってます。
対処としてはmalloc()の関数宣言をしているヘッダファイルを
includeしてあげれば警告は収まるはずです。
環境にもよりますが、#include <stdlib.h>を追加すればよいでしょう。

ちなみにコンパイルエラーや警告の意味が分からない場合、
その文字列で検索してみましょう。
それっぽい解説をしているサイトが多数見つかると思います。
見やすいのをピックアップしてブックマークしておきましょう。
    • good
    • 0
この回答へのお礼

これは初歩的なミスですねお恥ずかしい
ヘッダファイルがincludeされていなくても実行できちゃうんですね…

お礼日時:2011/12/31 16:25

引数が変数だからではなく、ヘッダファイルを適切にインクルードしていないためだと思います。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!