重複の可能性:
C ++プログラムでプログラム的にエンディアンを検出する
Cマクロ定義を使用して、ビッグエンディアンまたはリトルエンディアンのマシンを判別しますか?
現在、システムのエンディアンを検出するために次の関数があります。
inline bool detectSystemEndianness()
{
int i = 1;
char *c = reinterpret_cast<char*>(&i);
return (c[0] != i);
}
false
リトルエンディアンのtrue
場合、ビッグエンディアンの場合に戻ります。最初の質問:この関数は大丈夫ですか?
2番目の質問:この関数の代わりに、静的変数を初期化したいと思います:
static bool _systemEndianness = /* SOMETHING */
どうやってするか ?(コンパイル時ではなく実行時に実行する必要があります...少なくとも私はそう思います)