MacOS 8.6上CodeWarrior(IDE4.0.4)を用いて作成したC言語によるプログラムがあり ます。MacからLinuxマシン(VineLinux PPC 2.5)にそのソースをもってきましてgccにて コンパイルしましたところ、プログラム実行中での計測時間が狂います。具体的にはモ ニタ上に表示される時間が減少したりします(他の症状もあるかもしれませんが)。 おおかた型を誤っているのだろうと思ったのですが、いまのところ自分では気づけま せん。また、Mac上で走らせているぶんにはなんの異常もなさそうです。下に時間計測 に関わる部分のみをソースから抜粋してのせておきます。お気づきの点がありましたら アドバイスをお願いします。 typedef unsigned long int time_passed; void Read_tmp( const char *filename, const char *mode, int *pmax_series_set, int *pn_series_set, set **pseries_set, int *pmax_series_record, int *pn_series_record, int *poptimizesgl, record **pseries_record, int *pi_series_record, set *pnd_set, int *pstepmin, double *pratiomin, double *pep, int *pstepsgl, int *pstep, time_passed *ppass0 ); void Read_tmp( const char *filename, const char *mode, int *pmax_series_set, int *pn_series_set, set **pseries_set, int *pmax_series_record, int *pn_series_record, int *poptimizesgl, record **pseries_record, int *pi_series_record, set *pnd_set, int *pstepmin, double *pratiomin, double *pep, int *pstepsgl, int *pstep, time_passed *ppass0 ) { (中略) if(NULL == fgets(buf, sizeof(buf), fp)) exit(1); /*ppass0の読み込み*/ if(sscanf(buf, "passed time /sec = %lu", ppass0 < 1 fprintf(stderr, "can't read pass0 ! \n"), exit(1); printf("pass0 = %12u\n", *ppass0); (中略) } int main( { (中略) /*各初期値を得る.*/ if('y' == icon {/*tmpファイル, tmp.CDsearch130_bからの読み込み.*/ Read_tmp( "tmp.CDsearch130_b", "rb", &max_series_set, &n_series_set, &series_set, &max_series_record, &n_series_record, &optimizesgl, &series_record, &i_series_record, &ndp_set, /*読み捨て*/ &stepmin, &ratiomin, &ep, &stepsgl, &step, &pass0 ); else{/*初期値設定*/ (中略) pass0 = 0; } t0 = t1 = clock(); pass = (t1-t0) / CLOCKS_PER_SEC + pass0; /*時間計測開 始*/ for(; ;){ if(optimizesgl == 0) { for(; ;) { for(; ;) { (中略) for(; ;) { /*時間計測*/ t1 = clock(); pass = (t1-t0) / CLOCKS_PER_SEC +pass0; printf("\n"); printf("passed time = %12u sec\n", pass ); printf("\n"); (中略) } } } } if(optimizesgl == 1) { for(; ;) { (中略) /*時間計測*/ t1 = clock(); pass = (t1-t0) / CLOCKS_PER_SEC +pass0; printf("\n"); printf("passed time = %12u sec\n", pass); prin tf("\n"); } } (中略) /*時間計測*/ t1 = clock(); pass = (t1-t0) / CLOCKS_PER_SEC +pass0; printf("\n"); printf("passed time = %12u sec\n", pass); printf("\n") ; (中略) } /*計算全体を終了*/ return 0; } 田中 元 BYH01337@xxxxxxxxxxx