質問: こんにちは。 最近ESP32を知り電池駆動のワイアレス情報表示器を作成しようとしている初心者です。 時刻の処理でミリ秒が必要になり調べてみると struct timeb を見つけたので実装しようとしたのですがうまくいきませんでした。 ご教授よろしくお願いいたします。 【現象】 ``` #include .... void func() { struct timeb tb; ftime(&tb); ... } ``` arduino-esp32 又は esp-idf コード内で上記コードを記述してコンパイルすると undefined reference to `ftime' とエラーが出てコンパイルが通らない。 【やったこと】 arduino-esp32 , esp-idf それぞれのフォルダの中に timeb.h は存在したが実体を探せなかった。 【やりたいこと】 時刻の処理でミリ秒が必要です。 ● timeb.h 内の struct timeb.millitm を使いたい。 ● 上記が使えなければ ftime(struct* timeb) の実装方法が知りたい。 ● ftime(struct* timeb) の実装が無理なら時刻(time_t)に連動するミリ秒を実現するための方法が知りたい。 【環境】 Windows 10 64bit (Arduino 環境) Arduino IDE 1.8.3 arduino-esp32 : github.com/espressif/arduino-esp32 (esp-idf 環境) msys2 : esp32_win32_msys2_environment_and_toolchain-20170330.zip esp-ide : github.com/espressif/esp-idf.git
回答: `ftime` は古いっつか結局規格化されなかった代物なので実装されていないのでしょう。 Arduino でどれが使えるかは検証していませんが `gettimeofday` `clock_gettime` `millis` あたりで代用することを検討してください。 `millis` を使う場合は常に前回との差を取って使うようにしましょう。