As-if rule
From cppreference.net
Permite cualquier y todas las transformaciones de código que no cambien el comportamiento observable del programa.
Explicación
El compilador de C tiene permitido realizar cualquier cambio en el programa siempre que se mantenga lo siguiente:
|
1)
En cada
punto de secuencia
, los valores de todos los objetos
volatile
son estables (las evaluaciones previas están completas, las nuevas evaluaciones no han comenzado).
|
(until C11) |
|
1)
Los accesos (lecturas y escrituras) a objetos
volatile
ocurren estrictamente de acuerdo con la semántica de las expresiones en las que aparecen. En particular,
no se reordenan
con respecto a otros accesos volatile en el mismo hilo.
|
(since C11) |
2)
Al finalizar el programa, los datos escritos en archivos son exactamente como si el programa se hubiera ejecutado tal como fue escrito.
3)
El texto de solicitud que se envía a dispositivos interactivos se mostrará antes de que el programa espere la entrada.
|
4)
Si la directiva pragma
#pragma STDC FENV_ACCESS
es compatible y está establecida en
ON
, se garantiza que los cambios en el
entorno de punto flotante
(excepciones de punto flotante y modos de redondeo) serán observados por los operadores aritméticos de punto flotante y las llamadas a funciones como si se ejecutaran según lo escrito, excepto que
|
(desde C99) |
Notas
|
Esta sección está incompleta
Razón: completar de manera similar a cpp/language/as_if |
Véase también
|
Documentación de C++
para
regla as-if
|