Windows CEのCランタイムライブラリはデスクトップ版のCランタイム(ANSI標準Cランタイム)に比べて制限されている。
その1つが時間管理系の関数の削除。mktime()やlocaltime()といった標準のランタイム関数はWindows CEでは用意されていないためデスクトップ版のソースコードをそのまま持ってきた場合、これらの関数はコンパイルエラーとなってしまう。
以前Windows CE版のJavaScript Engineを移植したときもmktime()がなくて困って自作した記憶がある。localtime()はSQLite for Windows CEで実装されていたのを拝借した記憶がある。
このたびOpenNETCF.orgがこれらの関数のオープンライブラリ(OpenTimeCE)を提供してくれたので紹介する。
OpenTimeCE: time_t for Windows CE
以下の関数が提供されている。(ただし本来の関数とは別名(_ceが付いた形)で定義されているので必要に応じて修正するか、マクロで読み替える等が必要になる)
- asctime_ce (asctime)
- clock_ce (clock)
- ctime_ce (ctime)
- difftime_ce (difftime)
- gmtime_ce (gmtime)
- localtime_ce (localtime)
- mktime_ce (mktime)
- time_ce (time)
- strftime_ce (strftime)
デスクトップWindowsのソースコードをWindows CEに移植する人にとってはありがたいライブラリだ。