Bonjour,
je voudrais déclarer en ANSI C un tableau avec un sous tableau de longueur variable, pour être précis faire un truc comme ça:
[code]char f1( char x ) { return x+1; }
char f2( char x ) { return x+2; }
char f3( char x ) { return x+3; }
typedef char(*PF)(char);
typedef struct {
unsigned char length;
char value[];
} type1;
typedef struct {
unsigned char length;
PF value[2];
} type2;
typedef struct {
unsigned char length;
PF value[];
} type3;
const type1 type1List[]= {
{ 2, “AA” },
{ 3, “BBB” },
};
const type2 type2List[]= {
{ 2, { f1, f2 } },
{ 2, { f1, f3 } },
};
const type3 type3List[]= {
{ 2, { f1, f2 } },
{ 3, { f1, f2, f3 } },
};
int main() {
return 0;
}[/code]
Autant je peux déclarer avec un tableau de char, autant avec un tableau de pointeur de fonction, ça marche pas. Les type1 et type2, c’est pour vous montrer que ça marche avec un tableau de char et que ça marche avec un tableau de pointeurs de fonctions de taille fixe.
Mais je me fais jeter lors de la déclaration de type3List.
Je précise que je ne peux pas utiliser malloc, c’est pour de l’embarqué, il faut que ce tableau soit en ROM et non en RAM.
Aujourd’hui ce qui marche c’est ça, mais ça me satisfait pas complètement:
[code]char f1( char x ) { return x+1; }
char f2( char x ) { return x+2; }
char f3( char x ) { return x+3; }
typedef char(*PF)(char);
typedef struct {
unsigned char length;
PF* value;
} type3;
const PF funcList1[]={ f1, f2 };
const PF funcList2[]={ f1, f2, f3 };
const type3 type3List[] = {
{ 2, (PF*)funcList1 },
{ 3, (PF*)funcList2 },
};
int main() {
return 0;
}[/code]
En gros je suis obligé de créer des constantes intermédiaires.
Voilà, quelqu’un a-t-il compris ce que je demande? Une idée de comment déclarer ce tableau?
Duffy