R8C で localtime() 使用について

現在 R8C/35M を使用して開発を行っています。

時刻情報を time_t型でやり取りする必要があり、
C言語の標準関数 localtime() を使用して
\”年\” \”月\” \”日\” \”時\” \”分\” の情報を取得したいと
考えております。

下記コードにてビルドした所、ビルドエラー として
「C2782 (E) invalid '=' operand」
が出力されてしまい、対策が見付からず困っております。

------------------------------------------
struct tm *t_st;
unsigned long timer;

t_st = localtime(&timer);
------------------------------------------

#include <time.h> は定義しておりますが、
上記エラーの対策に関してご教授頂けませんでしょうか?
  • よしださん

    すと@konと申します。

    time.hをインクルードしているとのことですが、time.h内部にlocaltime()の定義はありません。

    NC30コンパイラのtime.hの中身はstruct tm/time_tの定義のみです。

    上記エラーはlocaltime()がコンパイラからすると未定義なため、invalidが発生したのだと思います。


    NC30コンパイラのマニュアル「付録E 標準ライブラリ」のtime.hの説明として「現在の暦時間を得る」とありますが、そのようなI/Fは用意されていませんので自前で準備する必要があります。
  • すとさん

    ご回答ありがとうございます。

    NC30コンパイラのマニュアルの time.h の説明として
    「現在の暦時間を得る」とありましたので、何かしらの
    対策方法があるかと思い投稿させて頂きました。

    残念ながらそのような I/F は準備されていないとの事ですので自前での対応を検討したいと思います。

    ご対応ありがとうございました。
  • C言語の入門と言うと、printf(\”hello\, word\n\”) が定番です。
     しかしこれはパソコンの場合で、組み込みマイコンでは使えません。
     ディスプレイが標準で付いている訳では無いですから。
     マニュアルの「E.3 標準入出力関数ライブラリのカスタマイズ方法」を読んで、表示プログラムを自分で作らなければなりません。

     時計も同様に、自分でプログラムを作らなければなりません。
     マニュアルには time.h が書いてあるので、ユーザーの時計データとのインターフェース方法が書かれているのかと思いましたが、書かれて無いようですね。

     時刻を得るには、時計ICを積んでいないとどうしようも無いですね。CPUのクロックで作る方法も有りますが、電源を入れる毎に設定する事になります。
     精度も良く有りません。