構造体に埋め込まれていると、C言語の新機能で配列型に問題があります。以下は私の問題の一例です:構造体内の配列
typedef struct {
double J[151][151];
} *UserData;
static int PSolve(void *user_data, N_Vector solution)
{
UserData data;
data = (UserData) user_data;
double J[151][151];
J = data->J;
/* Solve a matrix equation that uses J, stored in 'solution' */
return(0);
}
私はこれをコンパイルしようとすると、私は エラーが出る:型に割り当てる際のタイプから「ダブル[151] [151]」互換性のない型「をダブル(*)[ 151] '
現在の回避策は、行列式を解くために' J [x] [y] 'をコードの' data-> J [x] [y] 'に置き換えることでしたが、効率が悪いことを示しています。
引数の型と順序を規定するsundials-cvodeソルバーを使用しているため、PSolveへの引数の変更はオプションではありません。
は、助けを求め アンドリューありがとう
[C配列の宣言と代入の可能な複製?](http://stackoverflow.com/questions/744536/c-array-declaration-and-assignment) – outis
'data-> J'をローカル配列にコピーするのではなく、あるいは、あなたはその機能の中でそれを修正していますか? –
私は回避策として、私は行列式でデータ→J [x] [y]を読みとっていると言いました。しかし、この機能は実行中に数十億回呼び出されます。データ - > Jはパフォーマンスのボトルネックに見えます。回避策としてローカルコピーを取得しようとしています。 – Sevenless