cのプログラムのファイル分割が上手くできないんだが

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" って必要だっけ?
コメントアウトしても変わらないかもしれないけど

コメント

タイトルとURLをコピーしました