2010-09-24 6 views
2

Je n'arrive pas à déterminer comment déclarer un pointeur sur un tableau de tableaux de void*. (Je ne peux pas utiliser les conteneurs STL et autres parce que c'est un système embarqué.)déclaration d'un pointeur sur un tableau à deux dimensions de void *

J'ai quelques données que j'essaie de regrouper dans une structure. Principalement les types de données intégrés, mais sont ces deux tableaux. Le premier,

char *testpanel_desc[] = {...}; 

est pas un problème. Dans ma structure, je stocke un pointeur sur ce tableau comme ceci:

struct MyStruct 
{ 
    ... 
    char** panelDesc; 
}; 

Mais il y a celui-ci:

void *testpanel_pointers[][4] = {...}; 

et je ne peux pas trouver un moyen de définir un membre de ma structure que je peux assigner à ce tableau. void*** ne fonctionne pas à cause du 4 dans la déclaration d'origine.

Répondre

4

rendre la vie un peu plus simple et l'utilisation typedefs

identity<void*[4]>::type *panelDesc; 

Ou l'équivalent

typedef void *type[4]; 
type *panelDesc; 

Je doute que vous savez ce que les moyens suivants, mais il suffit de dire qu'il est équivalent trop

void *(*panelDesc)[4]; 

Notez que selon le type, ce n'est pas un "pointeur vers un tableau à deux dimensions de void *", un peu comme char** n'est pas un "pointeur vers un tableau à une dimension de char *". Mais en gardant la façon dont vous le faites dans le cas de la dimension unique (en pointant sur le premier élément), c'est la déclaration dont vous avez besoin.

+0

Merci. Je ne considérais pas le problème de la sorte (pointeur vers le premier élément), même si cela prend tout son sens quand on y réfléchit un peu. – dandan78

0
void *testpanel_pointers[1][4] = {}; 

void* (*p)[1][4]; //pointer to a two dimensional array of pointers to void 
p = &testpanel_pointers; 
Questions connexes