- 1 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:16:25.279 ID:9Uh2IYd30
- ソースファイルMath.cの中にnの平方根を求める関数Sqrtを作った
この関数をmain関数にそのまま書いたらちゃんと動作したのでこのプログラム自体が間違ってるわけではない
ヘッダファイルとの関連が上手くできてないようだがよくわからん - 2 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:16:45.391 ID:9Uh2IYd30
- //Math.cの中身
#include"Math.h"double Sqrt(int n){
int i;
double j;
for(i=1;i*i<n;i++);
if(i*i==n){
return (double)i;
}
else{
for(j=i-1;j*j<n;j+=0.0000001);
return j;
}
} - 3 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:17:19.162 ID:9Uh2IYd30
- //Math.hの中身
#ifndef _MMATH_H_
#define _MMATH_H_double Sqrt(int);
#endif
- 4 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:17:35.406 ID:Q3NV/xgY0
- gcc?
- 5 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:18:37.441 ID:9Uh2IYd30
- コンパイル時のエラー文
gcc main.c Math.c
Math.c:3:8: error: conflicting types for 'Sqrt'
double Sqrt(int n){
^~~~
Math.h:4:5: note: previous declaration of 'Sqrt' was here
double Sqrt(int); - 6 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:18:42.666 ID:frUEIS080
- どう上手くできないのか
コンパイルができないのか動かしたら変な動きしたのか - 8 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:20:25.540 ID:9Uh2IYd30
- >>6
>>5のとおり
コンパイルが上手くできない - 7 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:19:53.558 ID:9Uh2IYd30
- main関数内の#include
#include<stdio.h>
#include<math.h>
#include"Math.h" - 9 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:20:56.868 ID:szZkYKJZa
- 実行コマンドは
- 10 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:21:08.106 ID:C8rttYUd0
- 標準のとかぶるヘッダファイル名とか避けようや
- 15 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:23:11.081 ID:9Uh2IYd30
- >>10
mathじゃなくてMathだから大丈夫
>>13
詳しく - 11 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:21:44.499 ID:mQDkc8Vf0
- include guardしてる?
- 12 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:21:50.359 ID:2cBcLyRk0
- gccちゃんにふぇぇ…こんぱいるしてよぉ…ってお願いする
- 13 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:21:57.156 ID:Q3NV/xgY0
- math.hが悪いな
- 14 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:22:39.948 ID:eClOHHp70
- 標準ライブラリのsqrtと競合してんじゃね知らんけど
- 18 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:23:38.562 ID:9Uh2IYd30
- >>14
sqrtじゃなくてSqrtにしてるからそこは大丈夫 - 16 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:23:14.260 ID:mQDkc8Vf0
- してるか
staticにしたら? - 17 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:23:23.396 ID:2cBcLyRk0
- つか英語嫁や書いてあるだろ
Sqrtの型が競合してんだろ - 21 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:25:26.603 ID:9Uh2IYd30
- >>17
読んでも分からんから聞いてる
ヘッダファイル内のプロトタイプ宣言とMath.c内の関数を見比べても型かわらなくね
ちなみにプロトタイプ宣言の方は
double Sqrt(int);になってるけどこれを
double Sqrt(int n);にしてもダメだった - 19 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:23:49.795 ID:C8rttYUd0
- プロトタイプ宣言してる関数ま引数名のnも付けたら?知らんけど
- 20 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:24:40.487 ID:eClOHHp70
- インクルードガードがmmathなのにmathじゃん
- 22 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:26:55.646 ID:9Uh2IYd30
- >>20
それ関係あるか? - 23 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:27:23.265 ID:C8rttYUd0
- main.cも見せれ
- 24 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:28:05.515 ID:BauMGWiR0
- Javaは型に厳しいからJavaやればわかる
- 25 名前:ひみつの名無しさん 投稿日時:2020/04/18(土) 13:28:19.580 ID:V5aXSe7w0
- Math.c の #include"Math.h" って必要だっけ?
コメントアウトしても変わらないかもしれないけど
コメント