• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:仕組みがいまいちですが!)

C言語の関数の引数のエラーについて

このQ&Aのポイント
  • C言語の関数で引数のエラーが発生しています。
  • 関数の定義で同じ名前の引数を使うとエラーが起こります。
  • エラーメッセージの内容は「パラメータ 'hikisuu1' の再定義があります。以前の定義はここにあります。」です。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>int kansuu(int hikisuu1, int hikisuu1); > にすると以下のエラーが出ます。 >Line 2: error: redefinition of parameter 'hikisuu1' >Line 2: error: previous definition of 'hikisuu1' was here > なぜerrorとなるのでしょうか 1年A組に同姓同名(漢字は違うけど読みが一緒)の田中さんがいます。 『1年A組の田中さん、至急職員室まで来て下さい。』と放送で呼び出しがありました。 で、どちらが職員室に呼ばれたんでしょうか?? 二人の田中さんそれぞれ職員室に呼び出しを受ける心当たりはありません。

Campus2
質問者

お礼

分かりやすいご回答まことにありがとうございました。 なるほど!そういうことだったのですね^^  だから・(int h,int i)でも成り立つ   

その他の回答 (2)

回答No.3

関数プロトタイプに、変数名を伴った引数並びがある場合、それは、「変数の定義」と見なされます。 (関数プロトタイプ自体は、実体を伴わない「宣言」なのですけど) そして、同一スコープ(ある変数が有効な範囲)に、「同じ変数は複数定義できない」と言うことになっています。(文法上、引数の方は、実体があると見なされるため) こんなわけで、関数プロトタイプの、仮引数並びに同じ変数名を指定することはできないことになっています。

Campus2
質問者

お礼

ご回答まことにありがとうございました。   同一スコープ(ある変数が有効な範囲)に、「同じ変数は複数定義できない」  以上  頭の片隅においときます。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

プロトタイプ宣言で仮引数の名前までチェックするかは…微妙なところでしょうかね。 戻り値の型と引数の数や型、順番が把握できればよい…はずなので。 https://www.jpcert.or.jp/sc-rules/c-api08-c.html こんなハナシもありますなぁ…

関連するQ&A