エンディアンネス、つまりバイトがメモリに格納される順序は、コンピューター アーキテクチャによって異なる場合があります。システムのエンディアンネスの検出は、C コードの移植性と正確性を確保するために非常に重要です。
コードがインテルとインテルの両方でシームレスに実行される必要があるシナリオでは、 PPC システムでは、条件付きコンパイルに頼らずにプログラムでエンディアンを識別することが不可欠になります。
推奨されるアプローチには、C99 標準に従ってエンディアンを決定するクリーンで保証された方法を提供するユニオンを活用することが含まれます。次のコード スニペットは、このメソッドを示しています。
bool is_big_endian(void) { union { uint32_t i; char c[4]; } bint = {0x01020304}; return bint.c[0] == 1; }
説明:
共用体はそのようなシナリオ向けに特別に設計されており、一般的に推奨されるため、この方法は型の語呂合わせよりも優先されます。コンパイラによって。さらに、特にクロスプラットフォーム アプリケーションの場合、コンパイル時にエンディアンを修正する場合に比べて柔軟性が向上します。
以上がクロスプラットフォーム互換性のために C のエンディアンネスを決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。