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

  FORUM HardWare.fr
  Programmation
  C

  win 32 et utilisation de time.h

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

win 32 et utilisation de time.h

n°1081311
niemad
Posté le 12-05-2005 à 18:53:19  profilanswer
 

Bonjour,
 
J'utilise un code en C qui contient des fonctions de la librairie time.h. Tout marche bien lorsque j'utilise ce code sous Windows (Visual C++). Ce code est ecrit de facon a pouvoir etre aussi utilise sous Unix/Linux. J'ai donc essaye de compiler le code sous Cygwin (avec gcc) et tout marche bien, sauf que les mesures de temps de calcul effectuees avec les fonctions de time.h me renvoient parfois des valeurs negatives!
Les lignes de code correspondantes a l'appel des fonctions en cause sont du style suivant:

Code :
  1. #ifdef WIN32
  2.       _ftime(&tstruct2);   // end time ms
  3. #else
  4.       ftime(&tstruct2);    // end time ms
  5. #endif


 
Je ne suis pas vraiment sur du comportement du #ifdef WIN32. J'ai cherche dans le programme et il n'y a aucune declaration du genre #define WIN32. Est ce que c'est un parametre que le compilateur verifie automatiquement? (i.e. si compilation sous windows WIN32 est definie et sinon non)
Si le compilateur verifie ca tout seul est ce que quelqu'un connait le comportement de gcc lorsqu'il compile un soft sous Cygwin. J'ai essaye de voire dans le man de gcc s'il y avait des option a rajouter dans ma ligne de compilation mais j'ai rien vu d'interessant a ce niveau la.
 
Si quelqu'un a une idee pour expliquer mes mesures de temps negatives...

mood
Publicité
Posté le 12-05-2005 à 18:53:19  profilanswer
 

n°1081419
Emmanuel D​elahaye
C is a sharp tool
Posté le 12-05-2005 à 20:23:46  profilanswer
 

niemad a écrit :

J'utilise un code en C qui contient des fonctions de la librairie time.h.


Attention, ftime() n'est pas une fonction standard, et je doute que tu en ais vraiment besoin...

Citation :


Code :
  1. #ifdef WIN32
  2.       _ftime(&tstruct2);   // end time ms
  3. #else
  4.       ftime(&tstruct2);    // end time ms
  5. #endif


 
Je ne suis pas vraiment sur du comportement du #ifdef WIN32. J'ai cherche dans le programme et il n'y a aucune declaration du genre #define WIN32. Est ce que c'est un parametre que le compilateur verifie automatiquement? (i.e. si compilation sous windows WIN32 est definie et sinon non)


C'est correct, mais améliorable :  
 
Au début du code, ou mieux, dans un header de portage (portage.h) :  


#ifdef WIN32
#define ftime(p) _ftime(p)
#endif


 
L'utilisation devient alors transparente :


      /* end time ms */
      ftime (&tstruct2);


Mais as-tu essayé ftime() sous Windows ? En effet, il est rare qu'on utilise directement des fonctions _xxx() dans du code d'application. Je ne serais pas surpris qu'il existe une macro ftime().

Citation :

Si quelqu'un a une idee pour expliquer mes mesures de temps negatives...


Montre le code exact, réduit, complet et compilable qui fait le défaut.


Message édité par Emmanuel Delahaye le 12-05-2005 à 20:29:43

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1082487
niemad
Posté le 13-05-2005 à 16:15:03  profilanswer
 

Citation :

Montre le code exact, réduit, complet et compilable qui fait le défaut.


 
Le probleme c'est que l erreur ne se produit pas a chaque fois. J'ai une mesure de temps negatif environ 1% du temps seulement. Je vais essaye de reduire le code au minimum vital pour le mettre sur le forum car le programme en lui meme fait plusieur millier de lignes de code.
 
C est vrai que je n'avais pas pense a changer les lignes en mettant la declaration de ftime dans un header de portage. Ca peut effectivement rendre mon code un peu plus lisible.
 

Citation :

Mais as-tu essayé ftime() sous Windows ?


 
Je n'ai pas utilise ftime sous Windows car j'ai recupere le code tel quel et je n'ai pas modifie les parties contenant ftime() mais effectivement c'est un test que je devrais faire.
 
Merci


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

  win 32 et utilisation de time.h

 

Sujets relatifs
[C++ .net] Utilisation d'un microphone[perl tk] utilisation de fileevent
Utilisation du Drag N Drop[TCL] Utilisation de socket en TCL : HELP ! ! !
Utilisation des div et des bordures[MySQL] utilisation de IN
DLL MFC en C++ un run time??[c++] Utilisation de la date système
utilisation de XFormsUtilisation de la fonction time
Plus de sujets relatifs à : win 32 et utilisation de time.h


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