0

プログラムの実行時間を追跡するために使用されるストップウォッチを作成しようとしています。プライベート メンバーを示すコードは次のとおりです。

#include <sys/time.h>

class stopwatch
{
 private:
  struct timeval *startTime;
  int elaspedTime;
  timezone *Tzp;

  public:   
  //some code here 
};

問題は、プログラムのコンパイル中にエラーが発生することISO C++ forbids declaration of 'timezone' with no typeです. これは、使用しているライブラリが原因である可能性があると考えていますが、間違いを修正できません。私はインターネットで検索しましたが、唯一の投稿<sys/time.h>は、それが現在非常に時代遅れであるということです. 彼らは代替案を提案しませんでした。あなたは私を喜ばせることができますか?

4

3 に答える 3

4

あなたはただ使うことができますchrono

#include <chrono>
#include <iostream>

int main(int argc, char* argv[])
{
    auto beg = std::chrono::high_resolution_clock::now();

    // Do stuff here

    auto end = std::chrono::high_resolution_clock::now();
    std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(end - beg).count() << std::endl;

    std::cin.get();
    return 0;
}
于 2013-07-19T20:08:22.403 に答える
0

ここに見られるように

#include <iostream>     /* cout */
#include <time.h>       /* time_t, struct tm, difftime, time, mktime */

int main ()
{
  time_t timer;
  struct tm y2k;
  double seconds;

  y2k.tm_hour = 0;   y2k.tm_min = 0; y2k.tm_sec = 0;
  y2k.tm_year = 100; y2k.tm_mon = 0; y2k.tm_mday = 1;

  time(&timer);  /* get current time; same as: timer = time(NULL)  */

  seconds = difftime(timer,mktime(&y2k));

  std::cout << seconds << "seconds since January 1, 2000 in the current timezone" << endl;

  return 0;
}

必要に応じて名前を変更できます。また、ここにタイマーがあります<sys/time.h>

于 2013-07-19T20:17:40.183 に答える
0

Windows 環境で開発している場合は、プログラムの開始時と終了時に 1 回unsigned int startTime = timeGetTime()(msdn)unsigned int endTime = timeGetTime()を呼び出すことができます。endTimeから引くstartTimeと、プログラムが開始してから経過したミリ秒数が得られます。さらに精度を求める場合は、QueryPerformanceCounter関数を確認してください。

于 2013-07-20T21:03:00.007 に答える