RedHawk Linux User's Guide version 6.3 æ¥æ¬èªç
RedHawk Linux User's Guide version 6.3 æ¥æ¬èªç
RedHawk Linux User's Guide version 6.3 æ¥æ¬èªç
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
32bitコードから64bitコードへの 移 植コーディング 要 件 5データ 型 のサイズ 532bitと64bitの 移 植 性 の 主 要 な 問 題 は、アドレスのサイズまたはint, long 等 のサイズとの 関 連連 に関 して 推 定 があってはならないということです。表 E-1は、AMD64システム 上 の<strong>RedHawk</strong> <strong>Linux</strong> 下 での 様 々なANSIデータ 型 のサイズを 示 します。表 E-1 データ 型 のサイズANSIデータ 型charshortintlonglong longintptr_t, uintptr_tfloatdoublelong doubleサイズ(Byte)1248884816様 々なデータ 型 のサイズを 取 得 するために「sizeof」 演 算 子 を 使 用 することが 可 能 です。( 例 :もし 変 数 int xがある 場 合 、sizeof(x)によりxのサイズを 取 得 することが 可 能 となります)この使 用 法 は 構 造造 体 もしくは 配郤 列 に 対 しても 働 きます。 例 えば、a_structという 名 前 の 構 造造 体 型 変数 がある 場 合 、どれくらいメモリが 必 要 となるのかを 調 べるためにsizeof(a_struct)を 使 用することが 可 能 です。long 型 5long 型 は64bitとなるため、longとintの 値 間 で 直 接 または 暗 黙 的 な 割 り 当 てまたは 比 較 をすべて 調 査 する 必 要 があります。 有 効 性 を 確 実 にするためlongとintの 間 の 割 り 当 ておよび 比 較 を 認めることをコンパイラに 任 せるすべてのキャストを 調 査 して 下 さい。longのサイズを 解 決 するためにBITS_PER_LONGマクロの 値 を 利 用 して 下 さい。もしintとlongが 異 なるサイズのままでなければならない 場 合 ( 例 : 既 存 の 公 開 API 定 義 のため)、64bit 項 目 の 値 が32bit 項 目 の 最 大 値 を 超 えないことを 確 かめるアサーションを 実 装 し、それが発 生 した 場 合 に 対 処 するための 例 外 条 件 を 生 成 して 下 さい。ポインタ 5ポインタは64bitとなるため、ポインタとintの 値 間 で 直 接 または 暗 黙 的 な 割 り 当 てまたは 比 較 もまたすべて 調 査 する 必 要 があります。ポインタとintの 間 の 割 り 当 ておよび 比 較 を 認 めることをコンパイラに 任 せるすべてのキャストを 削 除 して 下 さい。(ポインタのサイズと 等 しい) 可 変 サイズ 型 へ 型 を 変 更 して 下 さい。 表 E-2は 可 変 サイズのデータ 型 を 示 します。E-3