Standardではない邪道なC++ライブラリの開発日誌
Dradnats C++ Libraryは標準や準標準のような立場を目指すものではないため、厳密な移植性に対する配慮は行わず、より現実的なスタンスで開発することにします。そのためには、あらかじめ対象とする処理系に対する仮定を行う必要があります。

対象とする処理系ですが、初期の段階では開発効率を優先してVisual C++ 2005を使用することにします。Visual C++ 2008でもよいのですが、現時点ではBoost C++ Librariesが未対応ですので、あえてひとつ古いバージョンを選択することにしました。

ただ、それはあくまでも開発環境の話であって、移植可能な処理系としては最低限GCCは視野に入れる予定です。まずは作業効率の関係上、CygwinMinGWに対応し、その後Linux等にも対応できればと考えています。

OSやフレームワーク等に依存するものを除けば、可能な限り規格厳密合致プログラムを目指したいのですが、さすがに次に挙げる内容については制約を課したいと考えています。
  • 負の整数値の内部表現には2の補数を使用すること
  • 整数型の符号ビットと値ビットの合計がsizeof(型)*CHAR_BITであること
  • バイトオーダーはビッグエンディアンかリトルエンディアンのいずれかであること
  • char型は8ビットであること
  • 8ビット、16ビット、32ビット、64ビットの整数型が使えること
  • long long型が使えること
  • 符号が異なる整数値の除算および剰余算の結果はdiv関数と同様に振舞うこと
  • std::type_info::nameが返す文字列は型ごとにユニークであること
  • 暦時間、CPU使用時間を取得できること

さしあたってこんなところです。必要に応じてさらに仮定を追加することもありますが、そのときは改めて話題に取り上げたいと思います。


ポータブルCプログラミング―移植性を考えたプログラミング技法
著者:M.R. ホートン
価格:¥ 5,505

『付録の関数対応表が秀逸』

C言語はCコンパイラとUNIXを記述するのに用いられている。
CコンパイラとUNIXは、CPUごとにいろいろ書き直す必要がある。
それを最小限にとどめることができれば、嬉しい人々は多い。
本書は、C言語でプログラムを書くときに、移植性(可搬性)を高くするための基本的な事項を説明している。

ps.
付録の関数対応表が秀逸である。
POSIXといいながら、どの処理系でも対応していない関数が結構ある。
なんのためのPortabilityだろうか。
この記事にコメントする
お名前
タイトル
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
仮定を追加
早速漏れが見つかったので追加します。

・ヘッダはファイルとして実現でき、探索順序を制御する方法がある。
たかぎ URL 2008/03/26(Wed)21:10:32 編集
この記事へのトラックバック
この記事にトラックバックする:
スポンサーサイト
ブログ内検索
カレンダー
02 2010/03 04
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
最新CM
[03/26 たかぎ]
最新TB