-2

私は C 言語を使用しており、別の機能を持つプログラムを作成する必要があります。私はそれにいくつかの問題を抱えており、解決策が見つかりませんでした。

私は2種類の機能を持っています。これです

int X(int i, int k){
        int p, n;
    return p + (i-1)*(n-1) + (k-1);
}

この関数で次のエラーが発生しました: error C2601: 'X' : local function definitions are illegal

もう一つは

void Mode(){
matrix_entry temp;
temp=M[i];
M[i]=M[small_i];
M[small_i]=temp;

問題は、matrix_entry、temp、および M が宣言されていない識別子であることです。

私の間違いを見つけるのを手伝ってもらえますか?ありがとう

4

1 に答える 1

2

エラー C2601: 'X': ローカル関数の定義が不正です

別の関数内で関数を定義しているようです。C++ では、これを行うことはできません。Xの定義を、現在入っている関数の外に移動します。

もう 1 つの可能性は、 の直前に別の関数があり、その関数の最後の をX見逃していることです。}

問題は、matrix_entry、temp、および M が宣言されていない識別子であることですが、私のメインでは次のようにしています。

まず、型は使用する前に宣言する必要があります。この関数は、 の定義の前かmatrix_entry、別のソース ファイルにあるようです。

の定義matrix_entryを使用する必要がある前に移動するか、ヘッダーに配置して、それを必要とする各ソース ファイルからインクルードします。これにより、 と の最初の 2 つの「宣言されていない識別子」エラーが修正されmatrix_entryますtemp

Mがの場合main、他の関数では使用できません。それを必要とする関数に渡すことができます:

void Mode(matrix_entry * M){
    matrix_entry temp;
    temp=M[i];
    M[i]=M[small_i];
    M[small_i]=temp;
}

int main() {
    matrix_entry *M = new matrix_entry  [10];

    //...
    Mode(M);
    //...

    // Don't forget to delete anything you new
    // (Better still don't new it in the first place, 
    // or use smart pointers if you must)
    delete [] M;
}
于 2013-05-10T10:59:50.170 に答える