Obtenir un timestamp en C en microsecondes?

Comment puis-je obtenir un microsecondes horodatage dans le C?

Je suis en train de faire:

struct timeval tv;
gettimeofday(&tv,NULL);
return tv.tv_usec;

Mais ceci renvoie à des bêtises de valeur que si je reçois deux horodateurs, la deuxième peut être plus grande ou plus petite que la première (seconde toujours plus grand). Serait-il possible de convertir la magie entier retourné par gettimeofday à un nombre normal, ce qui peut réellement être travaillé?

  • tv_usec n'est pas "au courant de temps en microsecondes" mais le "courant de temps en microsecondes modulo 10^6".
  • Essayez de POSIX clock_gettime().
  • Comment puis-je convertir en "normal" nombre?
  • Brooks: eh bien.. "normal", les nombres ont une mauvaise habbit d'avoir de gamme, donc il y aura toujours être une valeur pour laquelle il n'y a pas de plus grande valeur. Je pense que vous devriez revoir votre alrogithm. Essayez (sec2 - sec1)*1000000 + (usec2 - usec1). Ou, mieux, pour éviter les débordement possible pour les secondes, si vous savez que la période est inférieure à une seconde, lors de la seconde valeur est plus petite juste ajouter 1 000 000 pour elle.
  • J'ai juste besoin d'une microseconde d'horodatage pour calculer le défilement à inertie. J'ai besoin de quelque chose comme du temps (), mais pour une fraction de seconde.
  • liées - stackoverflow.com/questions/361363/...