Merci à vous deux JP et Loic...
j'avance gentillement sur le debbugage : voila un petit point ou je me trouve avec quelques compléments... et j'ai suivi tes directives maitre LOIC...
1/ création de 3 fichiers distincts : main.c - test.c - test.h
2/ dans le fichier point test.h, c'est ici que je défini mes structures, avec la déclaration de type lié à mes strcutures :
code :
//-----------------------------------------------------------------------------//
//--- déclaration de structures
//-----------------------------------------------------------------------------//
//--- structure interne de la tâche
//---------------------------------
struct s_tache
{
char task_name[100]; // nom de la tâche
unsigned char priority; // niveau de priorité la plus élévée
// = plus importante
int cpu_used; // utilisation du CPU
int ready_at; // gibilité de la tâche
int to_exec; // temps d'exécution restante
};
//--- déclaration du nouveau type structure (s_tâche)
//---------------------------------------------------
typedef struct s_tache s_tache_int;
//--- structure de la tâche externe (liant entre les différentes tâches)
//----------------------------------------------------------------------
struct s_element
{
struct s_element *pt_before_task; // pointeur indiquant la tâche d'avant
struct s_element *pt_next_task; // pointeur indiquant la tâche d'apèrs
s_tache_int propri_taches; // tâche en elle-même
};
//--- déclaration du nouveau type structure (s_tâche)
//---------------------------------------------------
typedef struct s_element s_tache_ext;
ça a l'air de marché !!! Merci à toi, loic
3/ dans le main, je veux créer plusieurs listes (tableau) de la structure qui correspond à la tâche externe et d'envoyer une de ces listes à une fonction pour initialisation selon le choix du client
code:
//--- création de différentes listes à utilisé
//--------------------------------------------
s_tache_ext liste_elements_prets[100]; // tb contenant les éléments prêt
s_tache_ext liste_elements_bloques[100]; // tb contenant les éléments bloqué
s_tache_ext elements_exec; // variable en exécution
//.....
//--- appel la fonction : init_task_list
//--------------------------------------
init_task_list(rep_client, &liste_elements_prets);
Apparemment ca fonctionne aussi, pas d'erreur
4/ création d'un fichier test.c pour traîter mes différentes listes.... Pour l'instant je me concentre sur l'initialisation, et c'est là que coinsouille :~
voici le code :
// Nom de la fonction : init_task_list
// Description : initialise différentes tâches
// selon l'exemple choisi
// Entrée(s) : choix_exemple
// Sortie(s) : -
// IN-OUT : pt_liste_pret
//----------------------------------------------------------------------------//
void init_task_list(int choix_exemple, s_tache_ext *pt_liste_pret)
{
//--- déclaration des différents éléments (tâches externes et interne)
//--------------------------------------------------------------------
s_tache_ext* tache1 = malloc(sizeof(s_tache_ext)); // cération tâche 1
s_tache_int t1_struct; // structure de la tâche 1
s_tache_ext* tache2 = malloc(sizeof(s_tache_ext)); // cération tâche 2
s_tache_int t2_struct; // structure de la tâche 1
s_tache_ext* tache3 = malloc(sizeof(s_tache_ext)); // cération tâche 3
s_tache_int t3_struct; // structure de la tâche 1
//--- selon choix client
switch(choix_exemple)
{
case 1 :
//--- création de la structure interne de la tache 1
//--------------------------------------------------
t1_struct.task_name[100] = "T1";
t1_struct.priority = 128; // P(ti)
t1_struct.cpu_used = 5; // P = période
t1_struct.ready_at = 5; // D = deadline
t1_struct.to_exec = 4; // C = durée de la tâche
//--- liaison entre la structure interne et la structure externe
tache1.propri_taches = t1_struct;
c'est à la dernière ligne qu'il y a une erreur, mais je ne la comprends pas...
|63|error: request for member `propri_taches' in something not a structure or union|
Si vous avez des idées bien volontiers
Merci de me lire encore....
Amicalement Philou