Notice : 内容無保証。禁無断転載。リンク不自由。

main.cpp

#include <stdio.h>

static const int _ONE_ = 1 ;

// BUGS: sizeof(char) < sizeof(int) を仮定している。
#define isLittleEndianCPU() (*((char*)(&_ONE_)) != 0)

// このサンプルでは、isLittleEndianCPU() の実装が正しいのか? とか、
// sizeof(int) <= sizeof(char) となるような環境が本当にあるのか?
// ってのはまあ置いといて、
// 前提条件が検証されないまま使われているのに注目すること。

// 最終的には仮定の検証をコンパイラに任せ、
// 実行時コスト0 で行う方法を示すことを目標とする。

int main(void){
    if (isLittleEndianCPU()){
        printf("Little Endian.\n") ;
    }else{
        printf("Big Endian.\n") ;
    }

    return 0 ;
}