トップ 一覧 検索 ヘルプ RSS ログイン

【SDK】 FontID のサイズについての変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
{{category 開発情報}}
{{category 陰郎の書いた記事,nolink}}

!!概要
 このトピックでは、ARMlet や Palm OS Simulator における ARMlet の代替 DLL から FontID を使用する API を呼び出す場合の注意事項について説明します。

 
!!説明
 Palm OS SDK の Font.h では、FontID は以下のように宣言(および定義)されています。

 enum fontID { 
     stdFont = 0x00,
     boldFont,
     largeFont,
     symbolFont,
     symbol11Font,
     symbol7Font,
     ledFont,
     largeBoldFont,
     fntAppFontCustomBase = 0x80
 };
 
 typedef enum fontID FontID;

 
 CodeWarrior を使用した限りでは、68K でも ARMlet でも sizeof(FontID) は 1 を返します。しかし、Palm OS Simulator 向けの ARMlet 代替 DLL を Microsoft Visual C++ 6.0 で作成したところ、sizeof(FontID) は 4 となりました。「[[【C/C++】 ARMlet での Palm OS API の呼出し方]] 」 で紹介している方法で Palm OS API を呼び出す場合、FontID 型のデータ幅を sizeof(FontID) として扱うと問題が発生する場合があります。

 他のデータ型同様、UInt16 や UInt8 といったデータ幅の明確な型の別名として FontID を定義してあればこのような混乱は起こらないはずなのですが、FontID が列挙型として定義されている理由は良くわかりません。おそらく、68K 側にあわせて 8 ビット幅のデータとして扱えば問題なく動作するものと思われます。

 
!!参考情報
*[[【C/C++】 ARMlet での Palm OS API の呼出し方]]

 
!!注意事項
 この情報は、筆者が CodeWarrior を使用した際に気付いた点について、手探りで原因を調査した結果を書き記したものです。そのため、他の開発環境には当てはまらない可能性があります。また、誤りがあるかもしれません。お気づきの方はご指摘いただけると幸いです。

!!コメント
{{comment multi}}