Onde está a constante '__FLT_MAX__' definida no Ubuntu?

4

Estou aprendendo programação em C usando o compilador gcc no Ubuntu 14.04 (64bits). Como prática, estou tentando localizar as definições de limites de tamanho de vários tipos de dados C.

Eu localizei facilmente limits.h em /usr/include e encontrei as definições explícitas de constantes como

#  define INT_MAX   2147483647

nele.

Também descobri que float.h está localizado em /usr/lib/gcc/x86_64-linux-gnu/4.8/include . No entanto, não encontrei a definição explícita de, digamos, FLT_MAX . O que eu tenho é

#define FLT_MAX     __FLT_MAX__

Mas onde está a definição de __FLT_MAX__ ? Ou onde o pré-processador C obtém o valor?

Referência :  Aqui está um tópico nos Fóruns do Ubuntu que também fez a mesma pergunta (mas não foi resolvida).

    
por Naitree 21.11.2014 / 10:22

1 resposta

4

__FLT_MAX__ é uma macro predefinida . Você provavelmente terá que olhar dentro da fonte do GCC para ver onde está definido, mas é fácil para o que é definido:

The C preprocessor normally predefines several macros that indicate what type of system and machine is in use. They are obviously different on each target supported by GCC. This manual, being for all systems and machines, cannot tell you what their names are, but you can use cpp -dM to see them all.

Então:

$ cpp -dM <<<'' | grep 'FLT_MAX'
#define __FLT_MAX_10_EXP__ 38
#define __FLT_MAX_EXP__ 128
#define __FLT_MAX__ 3.40282346638528859812e+38F
    
por muru 21.11.2014 / 10:42

Tags