36265


こんにちは。

最近ESP32を知り電池駆動のワイアレス情報表示器を作成しようとしている初心者です。  
時刻の処理でミリ秒が必要になり調べてみると struct timeb を見つけたので実装しようとしたのですがうまくいきませんでした。  
ご教授よろしくお願いいたします。

【現象】

[code]

    #include <sys/timeb.h>
    ....
    void func() {
        struct timeb tb;
        ftime(&tb);
        ...
    }
    
[/code]

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


CC BY-SA 3.0
2017-07-11T01:39:13.690
36261
2017-07-11T02:35:15.013
2017-07-11T02:17:45.437
19605
19605
question
c++ c arduino
arduino-esp32 又は esp-idf 環境で ftime() を使うと undefined reference to `ftime' エラーが出てコンパイルが通らない


`ftime` は古いっつか結局規格化されなかった代物なので実装されていないのでしょう。

Arduino でどれが使えるかは検証していませんが  
`gettimeofday` <https://linuxjm.osdn.jp/html/LDP_man-
pages/man2/gettimeofday.2.html>  
`clock_gettime` <https://linuxjm.osdn.jp/html/LDP_man-
pages/man2/clock_gettime.2.html>  
`millis`
[http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=2524](http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=2524)  
あたりで代用することを検討してください。

`millis` を使う場合は常に前回との差を取って使うようにしましょう。


CC BY-SA 3.0
2017-07-11T02:35:15.013
36265
2017-07-11T02:35:15.013
8589
36261
answer