d'abord l'erreur:C - Mapper un tableau dimensionnel en deux - Pourquoi cela ne fonctionne-t-il pas?
error: a value of type "float *" cannot be used to initialize an entity of type "float (*)[2000]"
Heres le code correspondant:
#define opType float
const int N = 2000;
opType *a_h,*b_h,*d_h, *a_d,*b_d, *d_d;
opType (*normalized_a)[N] = a_h;
opType (*normalized_b)[N] = b_h;
opType (*normalized_d)[N] = d_h;
opType (*normalized_a_d)[N] = a_d;
opType (*normalized_b_d)[N] = b_d;
opType (*normalized_d_d)[N] = d_d;
Je cherche à normaliser à deux dimensions afin que je puisse passer un double pointeur vers une fonction plus tard et faire référence à la deux dimensions en utilisant la syntaxe des parenthèses courtes. J'utilise CUDA donc je dois avoir des déclarations unidimensionnelles pour la copie de la mémoire. Y at-il un moyen de faire ce qui précède?
Cette construction est empruntée à http://forums.nvidia.com/index.php?showtopic=83941&view=findpost&p=475901
int linear[10*32]; // linear array
int (*twodim)[32] = linear; // interpreted as a two-dimensional [10][32] array.
assert(&twodim[2][4] == &linear[2*32 + 4]); // these are the same
Regardez dans l'utilisation de 'typedef'. – nmichaels
Bonne prise, je garderai ça à l'esprit pour l'avenir. –