エンディアンチェック

たまにはプログラム関係のことも。
今読んでいる本からコード抜粋&関数化。

boolean isLittleEndian( void )
{
  union ENDCHK{
    unsigned long lVal;
    unsigned char cVal[4];
  } endChk;

  endChk.cVal[0] = 0x00;
  endChk.cVal[1] = 0x01;
  endChk.cVal[2] = 0x00;
  endChk.cVal[3] = 0x00;

  return (256 == endChk.lVal);
}

ターゲットのエンディアンをチェックできるコードだが…正直使い道は殆ど皆無かと。ただ、こういう風にして確認(あくまで確認)が出来るというだけの話だろうなぁ、と。
例えば実行時にこの関数の結果で処理を切り替える、などと考えるよりもとっととターゲットのアーキテクチャを調べてコンパイルスイッチでコードを組んだほうがはるかに経済的でしょうし。
まあ、面白いかなぁ、というだけデシタまる