3

Mac OS X 上の Linux プラットフォームで記述された C コードを使用しようとしています。タイマーに関連するエラーが発生しています。

../src/stinger/timer.c:61:1: error: unknown type name 'clockid_t'
../src/stinger/timer.c:74:2: error: #error "Cannot find a clock!"

コードのこのセクションを指します。

 static clockid_t clockid;

#if defined(CLOCK_REALTIME_ID)
#define CLKID CLOCK_REALTIME_ID
#define CLKIDNAME "CLOCK_REALTIME_ID"
#elif defined(CLOCK_THREAD_CPUTIME_ID)
#define CLKID CLOCK_THREAD_CPUTIME_ID
#define CLKIDNAME "CLOCK_THREAD_CPUTIME_ID"
#elif defined(CLOCK_REALTIME_ID)
#warning "Falling back to realtime clock."
#define CLKID CLOCK_REALTIME_ID
#define CLKIDNAME "CLOCK_REALTIME_ID"
#else
#error "Cannot find a clock!"
#endif

このエラーの原因は何ですか? タイプはどこclockid_tから来るべきですか?

4

1 に答える 1

3

私の記憶が正しければ、すべての「時計」は、OSX によって実装されていない POSIX の「リアルタイム」拡張機能の一部です。だからあなたはそれで運が悪いでしょう。適切な解像度でクロックを取得するには、OSX 固有の機能を使用する必要があります。

編集: P99には、同様の C11 関数の OSX 用のラッパー コードがありますtimespec_get。これが本当に機能するかどうかはわかりません。私は Mac を持っていませんが、見てみてください。(ファイルは「p99_threads.h」)

于 2012-11-20T12:20:28.963 に答える