Bonjour tout le monde ,

Dans un projet , j'ai rencontré une difficulté pour allouer un certain objet et c'est ce qui m'a amené à essayer d'analyser sa nature.
Si l'on considère un objet tmp du type suivant déclaré dans le main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
unsigned char ( * tmp ) [ ];
Ce que j'ai compris , c'est que tmp est ici un pointeur sur un pointeur sur une zone de unsigned char , autrement dit un pointeur sur un tableau d'unsigned char .
Si maintenant je déclare également un deuxième objet tmp2 du type suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
unsigned char tmp2[10];
Et si je fais pour tester l'égalite de nature , la chose suivante :
J'obtiens par le compilateur le message suivant :
invalid use of array with unspecified bounds

Très bien , j'ai une intuition de l'endroit où ça peut venir , je n'ai pas spécifié de taille pour tmp.
Mais à mon stade de compréhension , je ne sais pas encore pourquoi cette taille est nécessaire mais passons , mettons la taille en faisant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
unsigned char ( * tmp ) [10];
unsigned char tmp2[10];
*tmp=tmp2;
J'obtiens cette fois-ci de la part du compilateur le message suivant :
incompatible types in assignment

Je ne comprends pas cette situation .
*tmp étant un pointeur sur un tableau de 10 unsigned char
tmp2 étant un pointeur sur un tablea de 10 unsigned char
Pour moi il y a identité des objets
Pourquoi le compilateur n'est pas content ?
*tmp n'est pas affectable ??

Et également je n'arrive pas à allouer mon tableau *tmp via une fonction avec passage de tmp en argument .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
int Alloueblabla( unsigned char ( *tmp )[ ]  );
Si dans le main j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
unsigned char ( * tmp ) []=NULL;
et que je souhaite allouer mon tableau *tmp , logiquement je ferai dans la fonction qui se chargerait de ce travail :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
*tmp=( unsigned char * )malloc( taille adéquate );
Mais j'obtiens error: invalid use of array with unspecified bounds

J'arrive pas à cerner concrètement ce message d'erreur .
Quelqu'un aurait-il un éclairement à me donner ??

Merci beaucoup