質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

3回答

4684閲覧

正方形の面積の一辺の長さを求められるようにしたいです。

sansan1

総合スコア7

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2019/12/12 05:37

<math.h>ヘッダを使って平方根の答えを出したいです。

#include <stdio.h>
#include <math.h>

double dist(double x)
{
return dist(x);
}

int main(void)
{
double x;

printf("正方形の面積の実数値を入力してください。->\n"); scanf("%lf",&x);

printf("正方形の1辺の長さは%fです。\n", dist(x));

return 0;
}

コンパイルにとおすと
[@pc138 20191121WorkDir]$ gcc -lm proI_8-3.c proI_8-3.c
/tmp/cc6brwbF.o: 関数 dist' 内: proI_8-3.c:(.text+0x0): dist' が重複して定義されています
/tmp/ccZQ8Jtd.o:proI_8-3.c:(.text+0x0): ここで最初に定義されています
/tmp/cc6brwbF.o: 関数 main' 内: proI_8-3.c:(.text+0x33): main' が重複して定義されています
/tmp/ccZQ8Jtd.o:19TI029_proI_8-3.c:(.text+0x33): ここで最初に定義されています
collect2: エラー: ld はステータス 1 で終了しました

と出てきてしまいます。何度見返してもとくにミスが見つかりません。どこを変えたら良いのかわかりません。

centosでemacsを使ってます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shiracamus

2019/12/12 05:49

ソースコードを codeタグで囲ってください。
guest

回答3

0

他の回答にもありますが、gccのオプションにproI_8-3.cを2つ書いてしまっているからですね。
dist関数が2つ作成されてしまい重複しているとエラーが出ています。
また他の回答にもありますが、dist関数内でdist関数を呼び出しています。
コンパイルは通るかもしれませんが、実行しても無限ループ(いずれスタックオーバーフローが発生)する作りになっているのでご注意を。
というかmath.hをインクルードしている割にはその関数を使っていません。
平方根を求めたいならsqrt関数あたりを使ってください。
http://www.c-tipsref.com/reference/math/sqrt.html

投稿2019/12/12 06:21

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

コンパイル、リンク自体の問題についてですが、

bash

1$ gcc -lm proI_8-3.c proI_8-3.c

proI_8-3.c を重複してコンパイル~リンクしています。gcc -lm proI_8-3.c としてください。(-lmオプションもいらないのでは? gcc proI_8-3.cで充分かと)

投稿2019/12/12 05:53

dodox86

総合スコア9183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

double dist(double x)

{
return dist(x);
}

これは何をしているつもりでしょうか。
ひたすら自分自身の関数を呼びだしてるように見えますが、これではダメです

投稿2019/12/12 05:44

y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問