Bonjour,

je suis en développement partagé pour un projet, et nous utilisons une structure globale dans l'archi de notre projet. Je ne peux donc qu'enrichir cette structure. Voici la structure à la base:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
struct vuhfw_internal_data
{
    struct vuhfw_active_logical_command active_logical_cmd; /* Active logical command */
    enum DM_COMMON_VUHF_COM_MODE_NW     last_stdby_mode_nw; /* TODO: en attente de passage du QoS de stdby NW à CTL */
    enum DM_COMMON_VUHF_COM_MODE_W      last_active_mode_w; /* Last active mode w */
    enum DM_VUHFW_PRESET_MODE           last_active_preset_submode; /* Last preset_submode */
    enum DM_VUHFW_COMSEC_TYPE           last_comsec_data_secure_selection; /* Last comsec data secure selection */
    BOOL                                vuhfw_init_in_progress; /* Manage the initialization phase of the vuhf */
    struct vuhfw_internal_data_radio_status radio_status;   /* CBIT data */
    UINT8                               hq_wod_erase_retry_counter ; /* Retry counter for HQ WOD erase command */
   etc.....
Pour le moment tout va bien, on instancie cette structure à l'init et on la remplit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
static const struct vuhfw_internal_data vuhfw_internal_data_init_values =
{
    /* .active_logical_cmd */
    {
        /* .timer_id */ 0,
        /* .index    */ 0,
        /* .step     */ 0,
        /* .status   */ vuhfw_LOGICAL_CMD_STATUS_NONE
    },
    /* last stdby mode nw */
    DM_COMMON_VUHF_COM_MODE_NW_FF,
    /* last active mode w */
    DM_COMMON_VUHF_COM_MODE_W_FF,
    /* last preset_submode */
    DM_VUHFW_PRESET_MODE_FF,
    /* last comsec data secure selection */
    DM_VUHFW_COMSEC_TYPE_PLAIN,
    /* .vuhfw_init_in_progress */
    FALSE,
    /* CBIT data */
    {
        /*. test_number */                      0,
        /* .lna_fault*/                         FALSE,
        /* .hpa_fault*/                         FALSE,
 
        /*. prev_test_number */                 0,
        /* .prev_lna_fault*/                    FALSE,
        /* .prev_hpa_fault*/                    FALSE,
 
        /*. test_number_timer_id */             0,
        /* .lna_fault_timer_id*/                0,
        /* .hpa_fault_timer_id*/                0,
        /* .late_net_entry_timer_id*/           0,
 
        /* .test_number_timer_is_activated */   FALSE,
        /* .lna_fault_timer_is_activated */     FALSE,
        /* .hpa_fault_timer_is_activated */     FALSE,
        /* .late_net_entry_timer_is_activated */FALSE,
 
        /* .alarm_status */                     FALSE
    },
    /* .hq_wod_erase_retry_counter */
    0U,
   etc .....

Bon. Il s'avère que je ne connais pas trop ce système d'init entière de la structure mais je dois m'y conforter. Le problème est que je rajoute ceci à la déclaration de ma structure:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
#define VUHFW_INTERNAL_DATA_MAX_GROUP_DATA_SIZE         97
#define VUHFW_INTERNAL_DATA_MAX_AFP_BLOCKS              128
 
/* AFP file groups */
struct vuhfw_internal_data_afp_blocks
{
    UINT8       length ;
    CHAR        block[VUHFW_INTERNAL_DATA_MAX_GROUP_DATA_SIZE];
};
 
struct vuhfw_internal_data
{
    struct vuhfw_active_logical_command active_logical_cmd; /* Active logical command */
     .......... 
     /* J'ajoute ça : */
    struct vuhfw_internal_data_afp_blocks vuhfw_afp_block[VUHFW_INTERNAL_DATA_MAX_AFP_BLOCKS]; /* Manage AFP blocks parsed from an AFP file */
};
C'est donc un tableau de structure, ces structures contenant elle meme une taille (length) et un autre tableau (block).

Ma question: vue la taille des données, comment initialiser entièrement ce tableau de structures à 0 par exemple, en gardant la déclaration antérieure. Pour le moment j'ai fait ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
static const struct vuhfw_internal_data vuhfw_internal_data_init_values =
{
    /* .active_logical_cmd */
    {
        /* .timer_id */ 0,
        /* .index    */ 0,
        /* .step     */ 0,
        /* .status   */ vuhfw_LOGICAL_CMD_STATUS_NONE
    },
   etc .....
 
    /* J'ajoute ça à la fin de mon init: */
    { { 0 } }
Question1 : Est-ce que tout mon tableau de structures sera initialisé à zero ?
Question2: Est-ce que ca me garantit aucun décalage dans le futur, c'est a dire que si quelqu'un d'autre rajoute un entier derrière ma déclaration, et l'initialise comme ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
{ { 0 } } ,
/* Init de son entier : */
8
Ca va fonctionner, il y aura bien 8 dans son entier (aucun décalage) ???

Merci pour l'aide !!!