- ベストアンサー
かなりの初心者なのですが...
Borlandのコンパイラーを使っているのですが、 以下のコードを書いたときに #include <stdio.h> #include <math.h> main() { double square(); double x,y; x = 1.5; y = square(x); printf("%lf\n",y); } double square(x); double x; { return(x*x); } 「エラー E2258 ここには宣言が必要だが見つからない(関数 square )」と出てコンパイルに失敗します。。例文のとおりに入力したのですがなぜこうなるのでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 まず、 > double square(x); > double x; > { > return(x*x); > } の部分がおかしいですね。 double square(double x){ return (x*x); } このようにしてみてください。 あと、main関数の double square(); はいりません。 そして、このプログラムの場合、 関数をmainの後に書いているので、 関数宣言というものを行う必要があります。 宣言の方法は、main関数の前に、 宣言したい関数を以下の方法で記述します。 [関数の型] 関数名( 引数の型 [,...]); 今回の場合、 double square(double x); と記述します。 また、main関数の前に関数の定義、宣言を まとめる方法もあります。 二通りのプログラムを示します。 ---- 関数宣言ver.----- #include <stdio.h> #include <math.h> double square(double x); //これ、関数宣言 main(){ double x,y; x = 1.5; y = square(x); printf("%lf\n",y); } double square(double x){ return (x*x); } ------関数宣言定義同時ver.------- #include <stdio.h> #include <math.h> double square(double x){ //関数宣言と定義 return (x*x); } main(){ double x,y; x = 1.5; y = square(x); printf("%lf\n",y); } ------------------- スペルミス等があるかもしれませんので、 コピーはオススメできません。 参考になれば幸いです。
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#include <stdio.h> #include <math.h> void main(void) { double square(double x); double x,y; x = 1.5; y = square(x); printf("%lf\n",y); } double square(double x) { return(x*x); } ------------------------------------------- 上記のようにしてみて下さい。 >double square(); ()の中に引数の型を書く必要があります。 >double square(x); ;が余計です。 また、この書き方はかなり古い書き方なので、例の様に変更した方が良いです。 >main() 型を省略するとintを返すものとされます。 何も返さない場合は void main() にします。
- DRAGON_TAIL
- ベストアンサー率48% (27/56)
#include <stdio.h> #include <math.h> main() { double square(); double x,y; x = 1.5; y = square(x); printf("%lf\n",y); } // mainが終了 double square(x); // xを宣言する前に使用? double x; // ここでxを宣言? { // 2乗を返す関数?がない return(x*x); } # あとはC++ならクラスを使おう…