移植性の高いコードを書くためには
Problem
移植性の高いコードを書くには、どのようにしたら良いでしょうか?
Solution
移植性の高いコードを書くには、処理系に依存しないことが重要です。しかし、何が処理系依存であるか判断することは容易ではありません。
本当に移植性の高いコードを書くためには、複数のコンパイラで常にコンパイル可能な状態に保つことです。
実際にboostでは複数のコンパイラでコンパイルできることが要求されています。
Boost Library Requirements and Guidelines
A library's implementation must if possible be portable and not restricted to a particular compiler or operating system. If a portable implementation is not possible, non-portable constructions are acceptable if reasonably easy to port to other environments, and implementations are provided for at least two popular operating systems (such as UNIX and Windows).
Boost Library Requirements and Guidelines(日本語訳)
ライブラリの実装は、可能であれば、移植性のあるものでなければならず、特定のコンパイラやOSへと制限されていてはならない。 もし移植性のある実装が不可能なら、移植性のない構築は許容される。もし他の環境へのportが妥当な容易さであるなら、 少なくとも二つのOS(例えばUNIXとWindows)への実装が提供される。
そして各コンパイラごとに警告レベルを最高に設定し、全ての警告を取り除くことをお勧めします。
最近では、無料で使用できるC++コンパイラが多数あり、気軽に複数のコンパイラを試すことができます。
以下に無料で使用できる代表的なコンパイラを挙げておきます。
Linux
・GCC
・Intel(R) C++ Compiler
・Sun Studio 12
Windows
・Visual Studio 2008 Express
・Cygwin(GCC)
・MinGW(GCC)
・Turbo C++ Explorer
・Open Watcom
・Digital Mars C/C++ Compiler
移植性の高いコードを書くには、どのようにしたら良いでしょうか?
Solution
移植性の高いコードを書くには、処理系に依存しないことが重要です。しかし、何が処理系依存であるか判断することは容易ではありません。
本当に移植性の高いコードを書くためには、複数のコンパイラで常にコンパイル可能な状態に保つことです。
実際にboostでは複数のコンパイラでコンパイルできることが要求されています。
Boost Library Requirements and Guidelines
A library's implementation must if possible be portable and not restricted to a particular compiler or operating system. If a portable implementation is not possible, non-portable constructions are acceptable if reasonably easy to port to other environments, and implementations are provided for at least two popular operating systems (such as UNIX and Windows).
Boost Library Requirements and Guidelines(日本語訳)
ライブラリの実装は、可能であれば、移植性のあるものでなければならず、特定のコンパイラやOSへと制限されていてはならない。 もし移植性のある実装が不可能なら、移植性のない構築は許容される。もし他の環境へのportが妥当な容易さであるなら、 少なくとも二つのOS(例えばUNIXとWindows)への実装が提供される。
そして各コンパイラごとに警告レベルを最高に設定し、全ての警告を取り除くことをお勧めします。
最近では、無料で使用できるC++コンパイラが多数あり、気軽に複数のコンパイラを試すことができます。
以下に無料で使用できる代表的なコンパイラを挙げておきます。
Linux
・GCC
・Intel(R) C++ Compiler
・Sun Studio 12
Windows
・Visual Studio 2008 Express
・Cygwin(GCC)
・MinGW(GCC)
・Turbo C++ Explorer
・Open Watcom
・Digital Mars C/C++ Compiler
コメント
コメントの投稿
トラックバック
http://articles.blog79.fc2.com/tb.php/36-173708a6
この記事にトラックバックする(FC2ブログユーザー)
