-2

この C プログラムをコンパイルすると、次のエラーが発生します。

In function `main': maxcount.cpp:(.text+0x63): undefined reference to `cnt(int)'

collect2: error: ld returned 1 exit status

どういう意味ですか?コードは次のとおりです。

#include<iostream>
using namespace std;
int cnt(int);
int main()
{
  int x[30],i,j,q;
  cout<<"enter x[i]";
  for(i=0;i<7;i++)
  {
    cin>>x[i];
  }
  q = cnt(x[30]);
}
int cnt(int x[30])
{
  int i,j;
  int max=x[0];
  int count=0;
  for(i=0;i<7;i++)
  {
    if(x[i]>max)
    {
      max=x[i];
    }
    else
    {
      max=x[0];
    }
  }
  for(i=0;i<7;i++)
  {
    if(max==x[i])
    {
      count++;
    }
  }
  cout<<count;
  return 0;
}
4

2 に答える 2

1

int cnt(int);これは、をmain()使用して前方宣言するの定義が見つからないことを意味します。

代わりに、次を定義します。

int cnt(int x[30]) { ... }

これらは 2 つの異なる署名です。1 つは整数の引数を取り、もう 1 つは整数の配列を取ります。

さらに、次のステートメントは正しくありません。

q=cnt(x[30]);

これは、配列からインデックス 30の31 番目の要素を取得します。xただし、xサイズが 30 であると宣言されているだけですx。関数内で配列として使用しているため、おそらく前方宣言を次のように変更する必要があります。

int cnt(int[30]);

そして、次のように呼び出します。

q = cnt(x);
于 2013-01-19T04:26:58.660 に答える