Shammer's Philosophy

My private adversaria

システムで定義されたマクロを確認する方法

以下のようにすることで確認できる。

$ echo | cpp -dM
#define __DBL_MIN_EXP__ (-1021)
#define __UINT_LEAST16_MAX__ 65535
.....

Cのソースは、OS などのプラットフォームが変わっても問題なくコンパイルできるように、環境ごとに展開されるコードを変える必要がある。ある CPU はビックエンディアンだが、リトルエンディアン環境では処理が変わる、というような場合、その変わるコードが自動で選択されるようにならないといけない。そのためにマクロを使用して環境ごとに展開コードを変える必要があるが、その際に使用されるのが上記コマンドで得られた結果。まあ、Mac でも Linux でも Windows でも動作する、というようなコードを書く場合に、上記のようなシンボルを意識すべし、ということになるのかもしれないが・・・今どきは、そんな要件があったら JavaPython を使うだろうな。。。まあ、この情報は Just in case といったところか。