エンディアン判定

ビッグエンディアンかリトルエンディアンかの判定をコンパイル時に決めるプログラム。
ただし,環境がこの2つ以外の特殊なエンディアンであったらダメ。
この方法は、short が 2 バイトではない場合(64ビット環境など)でも動くはず。

#ifndef ENDIAN_CHECKERcpp
#define ENDIAN_CHECKERcpp
namespace {
  const union {
	unsigned short a;
	unsigned char b[sizeof(unsigned short)];
  } ENDIAN_CHECKER={255};

  const bool isLittleEndian = (ENDIAN_CHECKER.b[0]==255)? true :false;
  const bool    isBigEndian =
  (ENDIAN_CHECKER.b[sizeof(unsigned short)-1]==255)? true :false;
}
#endif