Il me semble compliqué d'être à la fois externe et static puisque ce sont deux sortes de linkage différents. La solution est sans doute de les déclarer / définir sans les initialiser puis des les initialiser dans une fonction init().
Néanmoins, je vois que l'erreur est donné par [-fpermissive] et il me semble que cela est une option C++ et non C (https://gcc.gnu.org/onlinedocs/gcc-4...t-Options.html). Chez moi en tout cas, j'ai surtout une erreur pour la définition du type.
D:\....c|3|error: unknown type name 'type_fleche'|
Voilà un code qui devrait faire l'affaire :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include <stdio.h>
struct type_fleche // Flèche de l'automate
{
int etiquette; // étiquette de la flèche
struct type_fleche *etatSuivant; // état d'arrivée de la flèche
};
static struct type_fleche etat0[2], etat1[3];
void init(void)
{
etat0 [0] = (struct type_fleche) {0, etat1};
etat0 [1] = (struct type_fleche) {1, etat0};
etat1 [0] = (struct type_fleche) {0, etat1};
etat1 [1] = (struct type_fleche) {1, etat1};
etat1 [2].etiquette = 2;
etat1 [2].etatSuivant = etat0;
}
int main(void)
{
init();
printf("etat0 --> %p\n", etat0);
printf("etat1[2] = %d %p\n", etat1[2].etiquette, etat1[2].etatSuivant);
} |
Partager