• 締切済み

timeGetTimeについて

宜しくお願いします。 http://www.tsg.ne.jp/sept/prg/memo/timegettime.asp 上記のサイトを参照してtimeGetTimeを利用して実行時間の計測をしています。 このサイトにはmmsystem.hをインクルード,winmm.libとリンクしデータ型はDWORD型とあります。 しかし,そうしなくともwindows.hをインクルードしdouble型でtimeGettime();を読み込んでも値を読み込んでくれます。そしておそらく正確な数値のようなのですが,これでも大丈夫なのでしょうか。また,なぜこれでもできるのでしょうか。 御指南ください。使っているコンパイラはBCCでC言語で組んでいます。

みんなの回答

  • jgk
  • ベストアンサー率75% (104/138)
回答No.2

WIN32_LEAN_AND_MEANを定義すると、あまり使われないヘッダーをインクルードしなくなります 。 mmsystem.hはインクルードされなくなるヘッダの一つです。 VC++の自動生成とかを使ったりとか、MFCやATLみたいなのを使ってるとかで WIN32_LEAN_AND_MEANがデフォルトで定義されてたりする場合があります、 そういう場合には、mmsystem.hをインクルードしてやる必要があるということです。

全文を見る
すると、全ての回答が全文表示されます。
  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.1

timeGettime関数の戻り値はDWORDですが doubleに直接代入する分には何も問題ないと思います 得られる値は同じ値のはずですがそういうことを言われてるんではないのでしょうか? 以下をやってるのと同じって意味です (コンパイルしてるわけではありませんので型違いでワーニングが出るかもしれません) DWORD a; double b; b=a=timeGettime();

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • timeBeginPeriod()関数が使えるフリーのCコンパイラ

    現在、WIN2000上での、Borland C++ 5.5.1 for Win32を使って、コマンドラインのプログラムを作成しています。 Windowsが起動してからの時間をミリ秒単位で返す関数timeGetTime()を使いたいのですが、 「mmsystem.hをインクルードしてwinmm.libとリンクする」教えてもらったのですが、これらはどこで入手できるのですか? 教えてくださった方はVC++を使っているのですが、これらはBC++では使えないのでしょうか?それとも、どこかから上記の2つを入手してLIBやIncludeフォルダに入れればいいのですか? やりたいことは至極簡単で、キーをたたいた時間間隔を表示したいだけです。 BC++以外のフリーのコンパイラでもかまいません。 timeBeginPeriod()関数と同機能の別の関数を定義してそれを使うというのでもかまいません。

  • 音楽再生についてのVC++のプログラムの質問

    今あるソフトを作っているんですが、マルチメディアを使う場合に、mmsystem.hと いうヘッダファイルとwinmm.libというライブラリを使っているんですが、winmm.libとライブラリがどうゆうものかわからないのです。本に書いてあり、それをそのまま書いて実行させているのですが、これはフリーのライブラリなのでしょうか?詳しい方教えてください。

  • C言語

    現在、ストップウォッチの一時停止およびラップをとる機能のプログラムを作成しているのですが、 「計測中にtを押すと一時停止.一時停止中にtで計測再開」の部分は計測していないときに計測が開始されてしまいます。(計測中の処理は上手く動作できました) 「計測中にlを押すとラップをとる」という使い方の部分も同様に計測していないときに計測が開始されてしまいます。それから、実際に計測中にlを押したとき、ラップタイムではなく、スピリットタイムで表示されてしまい、上手く動作しません。 至急、修正または追加のほうお願いします。 #include <windows.h> #include <mmsystem.h> #include <stdio.h> #include <conio.h> #pragma comment(lib, "winmm.lib") void disp(DWORD time_value) { printf("%02d:%02d:%02d:%03d\r",time_value/3600000,(time_value/60000)%60,(time_value/1000)%60,time_value%1000); } int main(void) { int add_flag = 0; DWORD counter=0,start_time,cur_time; printf("使い方:小文字の's'でカウントスタート.カウント中,小文字の's'で停止.次の's'でまた0からスタート\n"); printf("使い方:どんな状態でも小文字の'r'でカウントリセットして停止\n"); printf("使い方:qでプログラム終了\n\n"); printf("使い方:計測中にtを押すと一時停止.一時停止中にtで計測再開\n"); printf("使い方:計測中にlを押すとラップをとる\n"); disp(counter); for (;;){ start_time = timeGetTime(); while (start_time == (cur_time = timeGetTime())) { if (kbhit()) { switch (_getch()){ case 's': disp(counter); printf(add_flag ? "\n計測中止\n" : "\n計測開始\n"); add_flag = !add_flag; start_time = cur_time = timeGetTime(); counter = 0; break; case 't': disp(counter); printf(add_flag ? "\n一時停止\n" : "\n計測再開\n"); add_flag = !add_flag; start_time = cur_time = timeGetTime(); break; case 'r': disp(counter); printf("\nカウンタリセット,停止\n"); add_flag = 0; counter = 0; start_time = cur_time = timeGetTime(); break; case 'l': disp(counter); printf("\nラップ\n"); add_flag = 1; break; case 'q': printf("\n終了\n"); return 0; } disp(counter); } } if (add_flag != 0){ counter += cur_time - start_time; disp(counter); } } }

  • コンパイラの設定がわかりません。

    C言語を始めようと思っていますが、ソフトをダウンロードしてからのコンパイラの設定がわかりません。 コンパイラの設定は、エディタで開いて -l"C:\borland\\bcc55\include"-L"C:\borland\\bcc55\lib" とあるサイトに載っていたのですが、これはどうやればいいのでしょう? 何か、ファイルを作成するのでしょうか? そのやり方がわかりましたら、教えてください。

  • C言語のプログラミングで質問です

    C言語のプログラミングで質問です. 時間を測ろうと下記のようなプログラムをしてみましたが計測時間がoTime, nTime共に0.000になってしまいます.(winmm.libはリンクさせてます) おかしいところはどこでしょうか? #include<stdio.h> #include<time.h> #include<windows.h> #include<mmsystem.h> #include<stdlib.h> #define N 2048 #define M 32 int main(int argc, char* argv[]) {   int i, j, k, l;   float target = 0;   float* a;   float* b;   float c;   DWORD nTime, oTime;     a = (float*)malloc(sizeof(float)*N);   b = (float*)malloc(sizeof(float)*N);   c = 0;   for(i = 0; i < N; i++)   {     a[i] = 1000;     b[i] = 0;   }  oTime = timeGetTime();   for(i = 0; i < M; i++)   {    for(j = 1; j < N/M; j += j)    {      for(k = 0; k < N/M; k++)      {        if(k % 2 == 0)        {          a[k+i*N/M] += a[k+j+i*N/M];        }      }    }    b[i] = a[i*N/M];    printf("%f\n", a[i*N/M]);   }   for(i = 0; i < M; i++)   {     target += b[i];   }   c = target;   nTime = timeGetTime();   printf("%f\n%f\n%f", c, oTime, nTime);   getch();   return 0; }

  • C++のコンパイラについての質問

    ボーランドと呼ばれるサイトで配布されている、C++コンパイラについての質問なんですが ↓の文章を(説明から抜粋)読んでも何をすればいいのか 解らず困っています、誰か意味の解る人が居たら、回答  お願いします  2. インストール先の bin ディレクトリで次の手順を実行します。 a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。 b. bcc32.cfg ファイルを作成します。このファイルは,Include および Lib パスのコンパイラオプション(コンパイラの -I および -L スイッチ)を設定するものです。ファイルには次の 行を含めてください。 -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" c. ilink32.cfg ファイルを作成します。このファイルは,Lib パスのリンカオプションを設定するものです。ファイルには 次の行を含めてください。 -L"c:\Borland\Bcc55\lib"

  • stdio.hをオープンできない…

    borlandのコンパイラーについての質問です(昔本付属のCDからインストールしたものです。verは5.5だと思われます。) ソースファイル include<stdio.h> void main(void){ printf("おめでとう!!\n"); } コンパイル c:\borland\bcc55\bin>bcc32 basic.c エラーメッセージはE2209 basic.c 1:インクルードファイルstdio.hをオープンできない、となります。このためprintfが使えないエラーメッセージも表示されます。過去の質問を色々と見させて頂きました。以前(昨年夏頃)には使えていた為、必要なファイルが消えている等の原因はなさそうです。メモ帳でbcc32も開いてみましたが-I"c:\borland\Bcc55\include"-L"c:\borland\Bcc55\libの表示があったので必要なファイルも開けているのではないかと勝手に解釈しています(bcc32.cfgフォルダなるものは存在しませんでしたが…)。いろいろと頑張ってみたのですがどうにもダメそうです。コンパイラが作動しないと課題が前に進まないため、大変困っています。是非皆様のお力をお貸し下さい。よろしくお願いします。

  • 何度やっても、、、(T.T)

    何回かここで質問したんですが、やっぱしわかりません。 インストール先の bin ディレクトリで次の手順を実行します。 a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。    ↑    ↑パスって何なんでしょうか?通し方がわかりません。 b. bcc32.cfg ファイルを作成します。このファイルは,Include および Lib パスのコンパイラオプション(コンパイラの -I および -L スイッチ)を設定するものです。ファイルには次の 行を含めてください。 -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib"    ↑    ↑bcc.cfgファイルをどうやって作るんでしょうか?     -I"c:~と-L"c:~はどこで入力したらいいの? c. ilink32.cfg ファイルを作成します。このファイルは,Lib パスのリンカオプションを設定するものです。ファイルには 次の行を含めてください。 -L"c:\Borland\Bcc55\lib"    ↑    ↑ここもわからないです(T.T) わからなすぎですかね。はは(^^; インストールってのはできてると思うんです。たぶん よろしくお願いします!

  • Borlandbcc55とMYSQLのコンパイル時にlibmysql.libやmysqlclient.libのリンクについて

    Windows上で、borlandbcc55、mysqlを利用しいてます。 Windows上のborlandbcc55、mysqlで C/C++のソースでMYSQLの接続・切断・管理・MYSQLのレコードの値の取得・値の表示の仕方の基礎を教えてください。 これなら動きますよというソースを教えて頂けたら有難いです。 Borlandbcc55とmysqlの設定 my_global.hとmysql.hをincludeして、 コンパイル時にlibmysql.libやmysqlclient.libをリンクしてやればできそうなのですが includeは Cのソースで #include "c:\mysql\include\mysql.h" #include "c:\mysql\include\my_global.h" と記述するだけでOKなのでしょうか? MYSQLのLibmysql.libの設定の仕方及びコンパイル時にlibmysql.libやmysqlclient.libを リンクする方法がわかりません。 bcc55コンパイラ設定のcfgファイルにlibMysql.libやmysqlclient.libを 追加設定必要ですか? 必要ならどう記述すればいいのでしょうか? また違う仕方なのでしょうか? 全く理解できていません。 そのリファレンスをみてもわかりません。 1 coff2omf c:\mysql\lib\opt\libmysql.lib c:\borland\bcc55\lib\libmysql.lib 2 ilink32 obj-Dateien, exe-Dateiname, map-Datei, Libraries 3 -> ilink32 c0x32.obj testmysql.obj , testmysql.exe , , import32.lib cw32.lib libmysql.lib これらの設定の仕方もわかりません。 設定に必要なのかどうかも理解できていません。 よろしくお願いします。

  • Windowsアプリケーションが作りたいのですが

    /* OS==XPpro コンパイラー==Borland C++5.5  */ #include <windows.h> で Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照) となってexeファイルができません。 解決法を教えてください。 C言語歴2日