Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

174
Vistas
¿Cómo determinar correctamente en tiempo de compilación que se admite _Float16?

Estoy tratando de determinar en tiempo de compilación que _Float16 es compatible:

 #define __STDC_WANT_IEC_60559_TYPES_EXT__ #include <float.h> #ifdef FLT16_MAX _Float16 f16; #endif

Invocaciones:

 # gcc trunk on linux on x86_64 $ gcc -std=c11 -pedantic -Wall -Wextra t0.c:4:1: warning: ISO C does not support the '_Float16' type [-Wpedantic] # clang trunk on linux on x86_64 $ clang -std=c11 -pedantic -Wall -Wextra t0.c:4:1: error: _Float16 is not supported on this target

Aquí vemos que tanto gcc como clang:

  • definir FLT16_MAX
  • no es compatible _Float16

La pregunta principal: ¿Cómo determinar correctamente en el momento de la compilación que se admite _Float16 ?

La pregunta adicional: ¿El estándar C11 (o más reciente) requiere no definir macros _MIN / _MAX si el tipo flotante correspondiente no es compatible? Por ejemplo, para tipos enteros ( <stdint.h> ) es cierto: "ni definirá las macros asociadas" (C11, 7.20 Tipos enteros <stdint.h>, 4). ¿Es lo mismo para los tipos flotantes?

UPD20211117:

  1. Invocar a gcc sin -pedantic hace que desaparezca la advertencia. Y _Float16 es compatible. ¡Estupendo!
  2. Invocar clang sin -pedantic no hace que el error desaparezca. Proabbly es un error.

Gracias al usuario n. 1.8e9-dónde-está-mi-participación m. por la idea

UPD20211118: gcc: con -pedantic se define el FLT16_MAX , lo cual es inesperado (¿o no?).

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

¿Cómo determinar correctamente en tiempo de compilación que se admite _Float16?

Compile un programa que use _Float16 . Si compila, significa que es compatible.

over 4 years ago · Santiago Trujillo Denunciar

0

El soporte de _FloatN se puede determinar comprobando si las macros MIN / MAX (y otras) asociadas están definidas (después de incluir float.h precedido por __STDC_WANT_IEC_60559_TYPES_EXT__ ).

Extra: el mismo principio se usa para determinar el soporte de tipos de stdint.h : verifique si las macros MIN / MAX asociadas están definidas.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda