[解決済み] ビッグエンディアン、リトルエンディアンマシンを判定するCマクロの定義?
2022-09-09 01:51:30
質問
エンディアンを判定するための1行マクロ定義はありますか。私は以下のコードを使用していますが、マクロに変換すると長くなりすぎてしまいます。
unsigned char test_endian( void )
{
int test_var = 1;
unsigned char *test_endian = (unsigned char*)&test_var;
return (test_endian[0] == 0);
}
どのように解決するのですか?
任意のバイトオーダーをサポートするコードで、ファイル名
order32.h
:
#ifndef ORDER32_H
#define ORDER32_H
#include <limits.h>
#include <stdint.h>
#if CHAR_BIT != 8
#error "unsupported char size"
#endif
enum
{
O32_LITTLE_ENDIAN = 0x03020100ul,
O32_BIG_ENDIAN = 0x00010203ul,
O32_PDP_ENDIAN = 0x01000302ul, /* DEC PDP-11 (aka ENDIAN_LITTLE_WORD) */
O32_HONEYWELL_ENDIAN = 0x02030001ul /* Honeywell 316 (aka ENDIAN_BIG_WORD) */
};
static const union { unsigned char bytes[4]; uint32_t value; } o32_host_order =
{ { 0, 1, 2, 3 } };
#define O32_HOST_ORDER (o32_host_order.value)
#endif
リトルエンディアン・システムをチェックするには
O32_HOST_ORDER == O32_LITTLE_ENDIAN
関連
-
g++が内部・外部コマンドソリューションとして認識されない、MinGWを初めて使うときの落とし穴
-
[解決済み] printf ファミリーを使用して、size_t 変数をポータブルに印刷するにはどうすればよいですか?
-
関数 'malloc' の暗黙の宣言に対する解決策
-
[解決済み] ⑭と⑯は何のためにあるのですか?
-
[解決済み] C言語で関数型プログラミングを行うためのツールにはどのようなものがありますか?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 配列のすべてのメンバーを同じ値で初期化するには?
-
[解決済み] なぜalloca()の使用はグッドプラクティスとみなされないのでしょうか?
-
[解決済み】このC関数は常にfalseを返すべきですが、そうではありません。
-
[解決済み】C++でビッグエンディアンとリトルエンディアンの値を変換するにはどうすればいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
関数 'malloc' の暗黙の宣言に対する解決策
-
[解決済み] Code::Blocks アプリケーションをコンパイルできない
-
[解決済み] PTHREAD_MUTEX_INITIALIZER vs pthread_mutex_init ( &mutex, param )
-
[解決済み] Linux Socket write() によるBad File Descriptor C
-
[解決済み] char *とchar[]の違い [重複]
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
-
[解決済み] Cコードの単体テスト【終了しました
-
[解決済み] C言語で "unsigned long "をprintfする方法は?
-
[解決済み] 非アクティブな組合員へのアクセスと未定義の動作?