前提・実現したいこと
C言語で入力した値の平方根を求める機能を作成しています。
引数の学習を目的としているため、
scanfで入力させる関数と、計算する関数とで別々に作成しております。
発生している問題・エラーメッセージ
以下のように、"重複して定義されています。"
というエラーメッセージが出てコンパイルできません。
[root@localhost ~]# gcc -g root.c -o root.o -lm root.c /tmp/ccd5UTTB.o: 関数 `main' 内: /root/root.c:6: `main' が重複して定義されています /tmp/cco7RmQN.o:/root/root.c:6: ここで最初に定義されています /tmp/ccd5UTTB.o: 関数 `root' 内: /root/root.c:19: `root' が重複して定義されています /tmp/cco7RmQN.o:/root/root.c:19: ここで最初に定義されています collect2: エラー: ld はステータス 1 で終了しました
"重複して定義されています"でググった結果、ヘッダファイルの扱いに問題があるのかと思いましたが、どこが問題なのかもわかりませんでした。
該当のソースコード
C
1 1 #include <stdio.h> 2 2 #include <math.h> 3 3 4 4 double root(double numArg); 5 5 6 6 int main(void){ 7 7 double inpNum; 8 8 double ans; 9 9 printf("√xのxの値を入力してください→"); 10 10 scanf("%f",&inpNum); 11 11 12 12 ans=root(inpNum); 13 13 14 14 printf("√%fは%fです。", inpNum,ans); 15 15 16 16 return 0; 17 17 } 18 18 19 19 double root(double numArg){ 20 20 double x; 21 21 x = sqrt(numArg); 22 22 return x; 23 23 } 24
試したこと
・上述の通り"重複して定義されています"でググりました
→ヘッダファイルの扱いに問題があるのかと思いましたが、どこが問題なのかもわかりませんでした。
・root関数とroot関数のプロトタイプ宣言、関数をコールする文章を全てコメントアウトしました
→"mainが重複して定義されています"とエラーメッセージが出ました
→単純なミスかとも考えられましたが、見つかりません。。。
【17:33追記】
ideone.comで同じコードで実行したところ走りました。
しかし、入力はできない状態です。
解決はCentOsでコンパイルできることに致します。
###実行環境
CentOsの7.5です。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/09/10 08:47
2018/09/10 08:49
退会済みユーザー
2018/09/10 08:50
2018/09/10 08:56