Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
863 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Executer une fonction avant un "return"

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Executer une fonction avant un "return"

n°742883
mog
KUPO !
Posté le 28-05-2004 à 11:42:11  profilanswer
 

Je cherche une fonction équivalente à 'atexit()' mais qui serait executée à la fin de chaque fonction.
 
Qui permettrai ce genre de chose:
 

Code :
  1. void a_executer(char* s) {
  2.   printf("Fin de la fonction %s\n", s);
  3. }
  4. int ma_fonction(int i) {
  5.   printf("Début de fonction %s\n", s);
  6.   on_return(a_executer("ma_fonction" ));
  7.   if(i == 1) return 1;
  8.   if(i == 2) return 2;
  9.   if(i == 3) return 4;
  10.   if(i == 4) return 8;
  11.   return -1;
  12. }


 
Ca me permettrais de logger les début et fin de fonction facilement

mood
Publicité
Posté le 28-05-2004 à 11:42:11  profilanswer
 

n°743372
mog
KUPO !
Posté le 28-05-2004 à 14:01:22  profilanswer
 

up

n°743413
gilou
Modérateur
Modzilla
Posté le 28-05-2004 à 14:18:30  profilanswer
 

Si tu as pas peur du code non portable microsoft, http://msdn.microsoft.com/library/ [...] tement.asp
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°743437
Taz
bisounours-codeur
Posté le 28-05-2004 à 14:23:56  profilanswer
 

merci gilou de ta largesse mais c'est du C++ à la marde MS
 
et nul besoin de tout ça en C++, un simple objet avec un destruccteur suffit

n°743463
gilou
Modérateur
Modzilla
Posté le 28-05-2004 à 14:35:46  profilanswer
 

Je lui ai mis ca parce que il a  posté ca dans la rubrique C, et que ce genre de truc marche dans du code C avec le compilo microsoft.
Pour du C++, il y a mieux adapté, certes.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°743468
Taz
bisounours-codeur
Posté le 28-05-2004 à 14:39:56  profilanswer
 

ça marche dans du code C tout simplement parce que VC++ ne fait pas la différence

n°743484
gilou
Modérateur
Modzilla
Posté le 28-05-2004 à 14:46:39  profilanswer
 

Si si: selon que l'extension de ton fichier est .c ou .cpp, le compilo VC++ a pas le meme comportement. La meme technique est utilisée avec le xml/html aussi d'ailleurs: du html est pas parse de la meme maniere par IE selon que l'extension est .htm ou .xml
A+,


Message édité par gilou le 28-05-2004 à 14:48:58

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°743497
cricri_
Posté le 28-05-2004 à 14:51:32  profilanswer
 

Et en C++ ça se ferait comment ?

n°743507
black_lord
Truth speaks from peacefulness
Posté le 28-05-2004 à 14:56:55  profilanswer
 

par un destructeur (comme l'a dit Taz)

n°743508
antp
Super Administrateur
Champion des excuses bidons
Posté le 28-05-2004 à 14:56:57  profilanswer
 

Dans Borland C++Builder j'utiliserais le try...__finally, équivalent du try...finally de Delphi, mais dans le genre code non portable on ne fait pas mieux :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le 28-05-2004 à 14:56:57  profilanswer
 

n°743538
Joel F
Real men use unique_ptr
Posté le 28-05-2004 à 15:06:30  profilanswer
 

Voial un exemple :
 

Code :
  1. class Watcher
  2. {
  3.   public :
  4.    Watcher( const std::string& funcname ) : name(funcname)
  5.    {
  6.       std::cout << "Debut de : " << name << "\n";
  7.    }
  8.    virtual ~Watcher()
  9.    {
  10.       std::cout << "Fin de : " << name << "\n";
  11.    }
  12.    private:
  13.    std::string name;
  14. };
  15. void func1()
  16. {
  17.    Watcher w("func1" );
  18.    // do stuff here
  19. }
  20. int main(int,char**)
  21. {
  22.    Watcher w("main" );
  23.     // do stuff
  24.     func1();
  25. }


 
Voila :)

n°743542
antp
Super Administrateur
Champion des excuses bidons
Posté le 28-05-2004 à 15:07:33  profilanswer
 

Pas mal, c'est tout simple et je n'y avais pas songé [:figti]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°743544
cricri_
Posté le 28-05-2004 à 15:08:08  profilanswer
 

Merci, ça c'est clair ;)

n°744530
TotalRecal​l
Posté le 29-05-2004 à 11:45:41  profilanswer
 

antp a écrit :

Pas mal, c'est tout simple et je n'y avais pas songé [:figti]


+1, c'est carrément pas idiot et totalement portable !

n°744533
drasche
Posté le 29-05-2004 à 11:47:37  profilanswer
 

[:blueflag]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°744818
matafan
Posté le 29-05-2004 à 18:25:28  profilanswer
 

Tu peux même faire « Watcher w(__func__) » pour être sûr de toujours avoir le bon nom de fonction (__func__ est dans C99). Avec GCC tu peux utiliser __PRETTY_FUNCTION__, qui contient en plus la signature de la fonction.

n°744893
Taz
bisounours-codeur
Posté le 29-05-2004 à 19:51:08  profilanswer
 

mais on vient de dire que ça marche pas en C :o

n°744899
antp
Super Administrateur
Champion des excuses bidons
Posté le 29-05-2004 à 19:59:34  profilanswer
 

Ouais, parce qu'en C je me demande ce que serait "Watcher". Il n'y a pas de classes en C, non ? :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°744900
Taz
bisounours-codeur
Posté le 29-05-2004 à 20:00:41  profilanswer
 

une déclaration de fonction, ni plus ni moins


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Executer une fonction avant un "return"

 

Sujets relatifs
fonction Javascript dans une page aspfonction COUNT(*)
$_SESSION Ne marche pas en fonction du navigateur (IE et Mozilla)Isnumeric: voilà une fonction qui parait bien !?
définir une fonction dans une application MFCcomment executer une procedure oracle et recuperer les valeurs out ?
utiliser une variable globale dans une fonction? [résolu]JDBC PostGreSQL, insertions de PL/PGSQL trigger et fonction marche pas
pb avec la fonction is_file()executer une procedure stockée dans une autre
Plus de sujets relatifs à : Executer une fonction avant un "return"


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR