Initialiser une structure contenant un tableau
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:
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:
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:
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:
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:
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 !!!