簡體   English   中英

我收到一個錯誤我是結構新手,不知道如何解決

[英]I get an error I'm new to structures and don't know how to solve it

當我嘗試編譯它時出現此錯誤:

在參數列表中聲明的“struct TMatrix”在此定義或聲明之外將不可見

3 | int InputMatrix(結構 TMatrix 矩陣);

#include <stdio.h>
#define MAX 1000
int InputMatrix (struct TMatrix Matrix);
struct TMatrix{
    int L, C;
};
int main() {
    struct TMatrix Matrix;
    InputMatrix(Matrix);
    return 0;
}

int InputMatrix (struct TMatrix Matrix) {
}

function聲明中結構struct TMatrix的聲明的scope

int InputMatrix (struct TMatrix Matrix);

是參數列表。 在它之外,這個聲明是不可見的。

所以這個結構聲明

struct TMatrix{
    int L, C;
    int N;
    int LIN[MAX];
    int COL[MAX];
    float X[MAX];
};

在文件 scope 中聲明另一個結構。

您需要交換聲明,例如

struct TMatrix{
    int L, C;
    int N;
    int LIN[MAX];
    int COL[MAX];
    float X[MAX];
};

int InputMatrix (struct TMatrix Matrix);

或者在 function 聲明之前放置結構的前向聲明

struct TMatrix;

int InputMatrix (struct TMatrix Matrix);

請注意,如果要更改 main 中聲明的結構類型的 object,則需要通過指向它的指針將其傳遞給 function。 否則 function 參數沒有意義。 那就是 function 應該聲明為

void InputMatrix( struct TMatrix *Matrix );

主要是你應該寫

struct TMatrix Matrix;
InputMatrix( &Matrix );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM