私の個人的な娯楽のために、私は C を学んでいます。行列計算ヘッダーを書こうとしています。マトリックス全体を表示する関数 rmat_show(rmatrix *r) があります。しかし、私のデータ型 rmatrix がこの関数にうまく渡されていないようです。
rmat.h:
// Matrix struct, m x n matrix. Pointer *value points to the contents.
struct srmatrix {
int m,n;
float *value;
};
typedef struct srmatrix rmatrix;
// Show the matrix
void rmat_show(rmatrix* r) {
int i, j;
printf("\nshow\n");
printf("[%dx%d]\n",r->m,r->n);
for (i = 0; i < r->m; i++) {
for (j = 0; j < r->m; j++) {
printf("%d\t",value[(j-1)*r->m+i-1]);
}
printf("\n");
}
}
そして、これをメインファイルとして持っています:
#include "rmat.h"
int main(int argc, char **argv){
float val[] = {0.1};
rmatrix *r = malloc(sizeof(rmatrix));
r->n = 1;
r->m = 1;
r->value = val;
rmat_show(r);
return 0;
}
rmat_show の後、別の関数で te マトリックスを強制終了しようとしました。'rmat_show' の引数 1 の互換性のない型は 'rmatrix' を予期していましたが、引数の型は 'struct rmatrix *'' でした。「typedef へのポインター」などの用語を検索してみましたが、結果はありませんでした。typedef 宣言が関数定義に引き継がれていないと思います。Windows 7でmsysとmingwを使用しています。
助けてくれてありがとう。
編集:ミスコピーしたtypedef行を追加しました。