関数に渡された配列の要素にアクセスする際に問題が発生しています。
#define N (128)
#define ELEMENTS(10)
typedef int (*arrayOfNPointers)[N];
したがって、これが正しければ、 へのN
ポインターの配列を記述するデータ型int
です。
次のように、後で配列を個別に初期化します。
arrayOfNPointers myPtrs = { 0 };
int i;
for (i=0; i<N; i++) {
myPtrs[i] = (int*)malloc(ELEMENTS);
}
ただし、これは次のエラーで失敗します。
error: incompatible types when assigning to type 'int[128]' from type 'int *'
だから、私の構文に何か非常に間違っているようです。しかし、そのような構造の内容を変更している別のコードのチャンクでは、問題はありません。
void doWork(void* input, void* output) {
int i,m,n;
arrayOfNPointers* inputData = (arrayOfNPointers*)input;
int* outputData = (int*)output;
for (m=0, n=0; n<nSamples; n++) {
for (i=0; i<nGroups; i++) {
outputData[m++] = (*inputData)[i][n];
}
}
}
この配列ロジックは深刻に壊れていますか?