現在の gettimeofday 値を double として返す関数があります。問題は、関数内で返される値が、関数外で割り当てられる値と同じではないことです。
ここにgdbスニペットがあります -
(gdb) n
3391 START = getCurrentTime()
(gdb) s
getCurrentTime () at file1.c:583
583 gettimeofday(&curTime, NULL);
(gdb) n
584 time = (double)(1.e3*curTime.tv_sec) + (double)(1.e-3*curTime.tv_usec);
(gdb) n
587 return time;
(gdb) p time
$77 = 1392323782187.8721
(gdb) n
588 }
(gdb) n
function3 () at file2.c:3406
3406 if (0 < var2)
(gdb) p START
$78 = 187872
(gdb) p (double)START
$79 = 187872
ご覧のとおり、 の値は!START
と一致しません。time
START
と定義されているdouble START
この問題の原因を特定するにはどうすればよいですか?