es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo verificar el estado de #pragma STDC?

Considere este código:

/* t0.c */

pragma STDC FENV_ACCESS ON

include “t0.h”

Luego, en t0.h, ¿cómo se puede verificar el estado de STDC FENV_ACCESS?
/* t0.h */
/* ¿cómo se puede verificar el estado de STDC FENV_ACCESS? */
/* algo así como: #if STDC FENV_ACCESS == ON */

Si no es posible, entonces:
1. ¿Por qué no es posible?
2. ¿Será útil agregar esta característica al estándar de C?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Respuesta:

    No es posible verificar el estado de STDC FENV_ACCESS en t0.h porque STDC FENV_ACCESS es una directiva pragma y no una directiva del preprocesador. Las directivas pragma son manejadas por el compilador durante la compilación y no son procesadas por el preprocesador. Por lo tanto, STDC FENV_ACCESS no está definido en el preprocesador y no se puede verificar en t0.h.

    Agregar esta característica al estándar C puede que no sea útil, ya que las directivas pragma son manejadas por el compilador y no están destinadas a ser verificadas por el preprocesador. Además, STDC FENV_ACCESS es una pragma no estándar que puede que no esté disponible en todos los compiladores. Por lo tanto, confiar en ella puede hacer que el código no sea portable. Es mejor usar funciones estándar de C como fesetround() y fegetround() para establecer y obtener respectivamente la dirección de redondeo, las cuales son más seguras y portables.

Comments are closed.