C, C++: Obter macros definidas pelo pré-processador

Palavras-chave: C, pré-processador, macros, macro, define, gcc

O pré-processador do GCC define uma série de macros por default. Muitas delas podem lhe ser útil, caso se deseje que um determinado bloco de código seja compilado para apenas uma determinada arquitetura, por exemplo. Para conhecer estas macros, basta perguntar ao pré-processador:

$ echo foo |gcc -dM -E -
(...)
#define __VERSION__ "4.1.2 20061115 (prerelease) (Debian 4.1.1-21)"
#define i386 1
#define __linux__ 1
#define __gnu_linux__ 1
#define __i486__ 1
#define unix 1
#define __i386__ 1
#define __SIZE_TYPE__ unsigned int
#define __ELF__ 1
#define __FLT_HAS_QUIET_NAN__ 1
#define __FLT_MAX_10_EXP__ 38
#define __LONG_MAX__ 2147483647L
#define __FLT_HAS_INFINITY__ 1
#define linux 1
(...)
$

A saída acima, mostra algumas das macros definidas pelo pré-processador i386-linux do Debian Etch. No pré-processador para a arquitetura arm-palmos temos as seguintes macros:

$ echo foo |arm-palmos-gcc -dM -E -
(...)
#define __palmos__ 1
#define __FLT_MIN__ 1.17549435e-38F
#define __CHAR_BIT__ 8
#define __WCHAR_MAX__ 2147483647
#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
#define __FLT_EVAL_METHOD__ 0
#define __SIZE_TYPE__ long unsigned int
#define __ELF__ 1
#define __DBL_MIN_10_EXP__ (-307)
#define __FINITE_MATH_ONLY__ 0
#define __ARMEL__ 1
#define __GNUC_PATCHLEVEL__ 1
#define __FLT_RADIX__ 2
(...)
$
This entry was posted in C, CPP. Bookmark the permalink.