begin process at 2012 05 30 18:07:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

tableau de pointeurs de fonctions


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

tableau de pointeurs de fonctions

lundi 10 janvier 2005 à 17:06:59 | tableau de pointeurs de fonctions

trapic

Bonjour,

    J'aimerais réaliser une procédure appelant une liste de fonctions variables à argument variables.

Exemple:
//Le tableau des fonctions et les parametres
    Sequence[3] = { lire(voie1), delai(1000), ecrire(voie2,valeur)};

//La procédure qui execute les fonctions du tableau
int ExecuteSequence (void)
{
    for (i=0;i<3;i++)
    {
       //Appel des fonctions du tableau
       ???
    }
}

//Ce qui est equivalent à
lire(voie1);
delai(1000);
ecrire(voie2,valeur);


Merci.

Patrick.
lundi 10 janvier 2005 à 18:24:38 | Re : tableau de pointeurs de fonctions

CriPpLe

Oula mais qu'est ce que tu nous fait là
Un tableau est censé regrouper des variables de même type, alors que là tu y mets des fonctions et en plus qui ne renverrons peut être pas le même type d'élement.

Je n'ai jamais utilisé ce type de code, donc je ne suis pas certain si ça marche ou pas mais logiquement c'est completement absurde.

De plus ça t'allonge le code pour rien, pourquoi tu veux faire ça ?
mardi 11 janvier 2005 à 07:24:34 | Re : tableau de pointeurs de fonctions

Nashua

Réponse acceptée !
Ca c'est du sport,
Tu code tes fonctions en premier, puis Tu declares ton tableau de fonctions.
Prends soins d'avoir toujours la meme signature pour les fonctions que tu desires inclure dans le tableau.
Dans le main appel ton pointeur sur fonction en lui passant les arguments.
Tu peux aussi faire des tableaux a plusieurs dimension.
Tu peux initialiser to tableau dans le main.
C'est super puissant, mais totalement incomprehensible. La maintenance est tres difficile.

Bonne chance.
/* mes fonctions avec la meme signature */
int f0(int a, int b){
         return a - b;
}
int f1(int a, int b){
         return a+b;
}
int f2(int a, int b){
         return a * b;
}

/* la declaration du tableau 1 dimension seulemment mais possible de faire int (*f[]i [] ) (int, int) = { {f0,f1},{f3,f4}};*/
 int (*f[]) (int, int) = {f0,f1,f2};


main(){
int ret ;
/* appel au pointeur sur f0() */
 ret = (*f[0]) (1,2);
 printf( "Ret = %d\n",ret);
 ret = (*f[2]) (1,2);
 printf( "Ret = %d\n",ret);

}
Yves

mercredi 23 février 2005 à 13:30:40 | Re : tableau de pointeurs de fonctions

trapic

Merci Yves!

Excuse moi pour ma réponse très tardive... mais ta réponse est très pertinente!

La finalité, un séquenceur en C pour l'embarqué.

Le tableau des séquences:
const rom s_sequenceur st_sequenceur_test[39]=  
{
//{"Message","Message Erreur",Fonction,{Paramètres},Nxt,Jmp,Exe,Lim-,Lim+,Comp,ErrPce},
{"T0:Inserer carte","Def tempo",Delai,{1000},1,38,1,0,0,0,0},
{"T0:Inserer carte","",DigitalInput,{SWITCH_CAPOT},2,38,1,1,1,1,0},
etc...

L'appel de la fonction:
//=============================================================================
 //APPEL LA FONCTION
 if ( st_sequenceur[u8_index_sequenceur].f() == TX_ERROR )
 {
  //erreur lors de l'exécution de la fonction
  u8_erreur_systeme = 1;
 } 
 else
 {
  u8_erreur_systeme = 0; 
 }

Une fonction:
int Delai(void)
{   
 //lecture des paramètres de la séquence en cours
 u16_cpt_delai = (u16) st_sequenceur[u8_index_sequenceur].flt_parametres[0] / BASE_TEMPS;
 
 while (u16_cpt_delai > 0)
 {
  //watchdog(); //rafraichissement du watchdog (indispensable en cas de delai supérieur au temps du watchdog!)
 }
 //u16_cpt_delai décrémenté dans l'IT 10 ms
 
 return TX_SUCCESS;
}


Patrick.
jeudi 24 février 2005 à 06:20:16 | Re : tableau de pointeurs de fonctions

Nashua

Tres heureux de constater que cela a pu t'aider.
J'ai aussi fais de l'embarque (embedded Linux sur serie Motorola 857T)
A+
Yves



Cette discussion est classée dans : variables, tableau, fonctions, pointeurs, procédure


Répondre à ce message

Sujets en rapport avec ce message

pointeurs et fonctions [ par alfred289 ] Structures, pointeurs, malloc et realloc reunis !! :) [ par mindark ] Alors la, je suis completement coulé !Voila mon probleme :J'ai une tableau "grid" qui est un tableau de structures "cell" :struct cell {bool bloquant; Tableau de correspondance des fonctions c++ et de leur fichier #include [ par guguy ] BonjourJ'aimerais savoir s'il serait possible de trouver un tableau de correspondance entre les fonctions c++ et leur fichier #include (ex : cout -> i [C] Pb Malloc avec des variables... variables[?] [ par Cow_B ] Salut à tous !! :)J'ai un tout petit souci :je voudrais faire une saisie au clavier d'un texte dont je ne connais pas la longueur. Voilà ce que je fai Pointeurs et tableau de pointeurs [ par dragon3x6 ] Salut à la communauté des developpeurs C,j'essai d'écrire un bout de code qui enregistre une liste de mots dans une structure de type arbre.Lorsqu'un pointeurs de tableau [ par _Jonathan ] salut a tousje cherche a lire dans un fichier (sa, sa va...) chaques lignes et les stocker dans un tableau.ex : *Tableau[];.........printf("texte 1 : passer un tableau de pointeurs en parametres [ par achirane ] bonjour,je debute en C (dur..) et j'ai un pb qui va surement vous faire ricaner ;-) :je voudrais passer un tableau de pointeurs en parametre a ma fonc Pointeurs fonctions de types inconnus [ par Galmiza ] Bien le bonjour,J`aimerai recuperer des pointeurs vers des fonctions dont je ne connais pas le type a l`avance.Ex:DWORD FonctionAlacon(char* pStr){  r Variables globales ? [ par tintin72 ] Bonjour, Dans mon application (écrite en C) j'ai un problème pour passer plusieurs handles à des fonctions.En effet, j'utilise des fonctions Windows q Pointeurs et Tableau ansi que malloc [ par Hkz ] Bonjour à tous ;)     Alors voila pour mon prochaine programme j'ai besoin d'un tableau sans taille présise donc je me suis tourné vers les pointeurs


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales