プロが教える店舗&オフィスのセキュリティ対策術

リトルエンディアンのマシンで作ったバイナリデータをいろいろなマシンで読み込みたいのですが、一部がビッグエンディアンなので変換の必要があります。ただ、ソースを共通にしたいのでエンディアンを知ることができるマクロの値でエンディアンの違いの処理を行いたいのですが、どのようなマクロを使えばいいのでしょうか?

A 回答 (11件中11~11件)

> エンディアンを知ることができるマクロの値で



それは#ifなどで静的に処理したいということでしょうか?
だとしたら、処理系に応じて手作業でマクロを定義し直してやるしかありません。
動的に判定するのでかまわないなら、マクロにするより関数にした方がよいと思います。

ところで、リトルエンディアンとビッグエンディアンだけで、PDPエンディアンとかは配慮しなくてもいいんですよね。

この回答への補足

ご回答ありがとうございます。

コンパイル時にはCPUが決まっているので、コンパイラはエンディアンを知っているはずであり、
#ifdef BIG_ENDIAN
// エンディアンの変換処理
#endif
という感じで使えるマクロがあるのではないかと思って質問してみたのですが、、、
PDPはおそらく一生使うことは無いでしょう。というか、現在世の中に存在しているのでしょうか?

補足日時:2007/05/21 00:51
    • good
    • 0
この回答へのお礼

お礼と補足がいれかわってしまいました。
補足です。

コンパイラを特定しないといけませんでした。コンパイラは gcc とお考えください。CPU は Intel系(開発に使うPC)、ARM(DS)、MIPS(PS2、PSP)、PowerPC(WII) です。

お礼日時:2007/05/21 01:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!