gcc で定義されているマクロを探す2009年03月18日 22時02分32秒

滅多に使わない為に良く忘れてしまうコマンド。コンパイル時のホストによって動作を変えたい時などに、これが見たくなる。

% cpp -dM /dev/null
#define __DBL_MIN_EXP__ (-1021)
#define __FLT_MIN__ 1.17549435e-38F
#define __DEC64_DEN__ 0.000000000000001E-383DD
#define __CHAR_BIT__ 8
#define __WCHAR_MAX__ 2147483647
#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
#define __FLT_EVAL_METHOD__ 2
#define __DBL_MIN_10_EXP__ (-307)
#define __FINITE_MATH_ONLY__ 0
#define __GNUC_PATCHLEVEL__ 1
#define __DEC64_MAX_EXP__ 384
#define __SHRT_MAX__ 32767
#define __LDBL_MAX__ 1.1897314953572316e+4932L
#define __UINTMAX_TYPE__ long long unsigned int
#define __DEC32_EPSILON__ 1E-6DF
...

同じコンパイラでも、入手先やバージョン、もちろんプラットフォームなどによって違ったりするし、同じホスト上でもコンパイラによって異なる。

実務上では __FreeBSD__ などと、コンパイラが提供するものに依存せずに、Makefile などで自前で FreeBSD 等と明示的に指定した方が、出どころも判りやすいし、いちいち違う環境を試す時に期待道理にコンパイラが定義しているかを探す手間が省ける。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2009/03/18/4190013/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。