この質問は、PhysicsFS ライブラリのプラットフォーム非依存性に関する質問への回答に関する議論の結果として生じました。問題は、特定のコードがクロスプラットフォームまたはプラットフォーム非依存と見なされるかどうかです。コードは特定の標準に準拠する必要がありますか、それとも特定のプラットフォーム セットで実行する必要がありますか?
2 に答える
それはとても良い質問です!私はここで推測しようと思いますので、明確な答えが本当にないので、ご容赦ください。
「プラットフォームに依存しない」とは、インフラストラクチャを隠す何かによって実行されるコードを指すと思います。たとえば、JVM はプラットフォームを言語から隠します。言語にはプラットフォームへのアクセスを提供するものは何もありません。したがって、プラットフォームに依存しません。クロス プラットフォームは、プラットフォームの詳細から切り離されていないものだと思います。たとえば、JavaScript を考えてみてください。ブラウザとその癖のすべてにアクセスできます。したがって、すべてのブラウザーで実行する Javascript コードを作成することは、クロスブラウザーになります。これは、「クロスプラットフォーム」であると推測できます。
プラットフォームに依存しない: コンパイラ/システム ライブラリ/VM/etc... がその言語/ライブラリ/etc... の標準に準拠している場合、規定された標準に準拠する将来のすべてのプラットフォームでコードをコンパイル/実行する必要があります。これは、コードがプラットフォーム依存#ifdef
のをどこでも使用できないこと、およびプログラムが上記の標準で定義されていない API にアクセスしないことを意味します。
クロスプラットフォーム: これはあいまいで、主に個人的な好みです。私にとっては、3 つの大きなプラットフォーム/OS (x86(_64) Windows、Linux、および/または Mac) のうち少なくとも 2 つで動作することを意味します。ほとんどの場合、より多くのプラットフォームとアーキテクチャで動作し、一部または大部分の POSIX API 機能を使用します (少なくとも Windows 以外のコードの場合)。#ifdef
それを必要とするプラットフォーム (posix 対 win32 対 ...) 用の特殊な API を呼び出すための限られた数の が含まれます。