I ont une structure qui contient un des tableaux d'une autre structure, il ressemble à ceci:initialisation structures/tableaux emboîtés
typedef struct bla Bla;
typedef struct point Point;
struct point
{
int x, y;
};
struct bla
{
int another_var;
Point *foo;
};
Je veux maintenant les initialiser dans la portée globale. Ils sont destinés à la description d'un module. J'ai essayé de le faire avec les littéraux composés de C99, mais le compilateur (gcc) ne m'a pas plu:
Bla test =
{
0, (Point[]) {(Point){1, 2}, (Point){3, 4}}
};
Je reçois les erreurs suivantes:
error: initializer element is not constant error: (near initialization for 'test')
Depuis que je ne ai pas besoin de modifier Je peux y mettre autant de "const" que nécessaire. Y a-t-il un moyen de le compiler?
Est-ce que cela alloue dynamiquement la mémoire pour les deux points? – aib
@aib: Oui, il crée un tableau de deux structures "ponctuelles" littérales (avec une durée de stockage statique puisqu'il est dans la portée du fichier) et initialise le membre "foo" de "test" pour les pointer. C'est un raccourci qui équivaut à définir un tableau séparément et à assigner le membre "foo" pour le pointer. –