Implementaciones independientes y albergadas
De cppreference.com
< cpp
Existen dos tipos de implementaciones definidas por el estándar de C++: albergadas e independientes. Para las implementaciones albergadas el conjunto de archivos de encabezado requerido por el estándar de C++ es mucho más extenso que para las independientes. En una implementación independiente la ejecución puede suceder sin un sistema operativo.
Requerimientos de ejecuciones multihilos y carreras de datos
|
(desde C++11) |
[editar] Requerimientos de la función main
| independientes | albergadas |
|---|---|
| En una implementación independiente, se define por la implementación si se requiere que un programa defina una función main. Inicio y fin están definidos por la implementación; el inicio contiene la ejecución de los constructores para objetos de ámbito de espacio de nombres con duración de almacenamiento estática; el fin contiene la ejecución de los destructores para objetos con duración de almacenamiento estática. | En una implementación albergada, un programa debe contener una función global llamada main. La ejecución de un programa inicia hilo de ejecución principal en el que se invoca a la función main, y en la que las variables con duración de almacenamiento estática pueden ser inicializadas y destruidas. |
[editar] Requerimientos de los archivos de encabezado estándares
Una implementación independiente tiene un conjunto de archivos de encabezado definido por la implementación. Este conjunto incluye al menos los archivos de encabezado de la tabla siguiente:
| Tipos | <cstddef> |
| Propiedades de la implementación | <limits> <cfloat> <climits> (desde C++11) <version> (desde C++20) |
| Tipos enteros | <cstdint> (desde C++11) |
| Inicio y fin | <cstdlib> (partial)[1] |
| Administración de memoria dinámica | <new> |
| Identificación de tipo | <typeinfo> |
| Ubicación de fuente | <source_location> (desde C++20) |
| Control de excepciones | <exception> |
| Lista de inicializadores | <initializer_list> (desde C++11) |
| Comparaciones | <compare> (desde C++20) |
| Soporte de corutinas | <coroutine> (desde C++20) |
| Otro soporte de tiempo de ejecución | <cstdarg> |
| Conceptos fundamentales de la biblioteca | <concepts> (desde C++20) |
| Rasgos de tipo | <type_traits> (desde C++11) |
| Manipulación de bits | <bit> (desde C++20) |
| Tipos atómicos | <atomic> (desde C++11)[2] |
| <ciso646> (desde C++11)(hasta C++20) | |
| Archivos de encabezado obsoletos/en desuso | <cstdalign> <cstdbool> (desde C++11)(hasta C++20) |
- ↑ La versión suministrada del archivo de encabezado
<cstdlib>deberá declarar al menos las funciones std::abort, std::atexit, std::exit, std::at_quick_exit y std::quick_exit (desde C++11). - ↑ Soporte para tipos atómicos enteros siempre libre de cerrojos (lock-free) y la presencia del alias de tipo std::atomic_signed_lock_free y std::atomic_unsigned_lock_free están definidos por la implementación en una implementación independiente. (desde C++20)
[editar] Referencias
- El estándar C++20 (ISO/IEC 14882:2020):
- 4.1 Implementation compliance [intro.compliance](p: 7)
- 6.9.2 Multi-threaded executions and data races [intro.multithread](p: 77)
- 6.9.3.1 main function [basic.start.main](p: 82)
- 16.5.1.3 Freestanding implementations [compliance](p: 470)
- El estándar C++17 (ISO/IEC 14882:2017):
- 4.1 Implementation compliance [intro.compliance](p: 5)
- 4.7 Multi-threaded executions and data races [intro.multithread](p: 15)
- 6.6.1 main function [basic.start.main](p: 66)
- 20.5.1.3 Freestanding implementations [compliance](p: 458)
- El estándar C++14 (ISO/IEC 14882:2014):
- 1.4 Implementation compliance [intro.compliance](p: 5)
- 1.10 Multi-threaded executions and data races [intro.multithread](p: 11)
- 3.6.1 Main function [basic.start.main](p: 62)
- 17.6.1.3 Freestanding implementations [compliance](p: 441)
- El estándar C++11 (ISO/IEC 14882:2011):
- 1.4 Implementation compliance [intro.compliance](p: 5)
- 1.10 Multi-threaded executions and data races [intro.multithread](p: 11)
- 3.6.1 Main function [basic.start.main](p: 58)
- 17.6.1.3 Freestanding implementations [compliance](p: 408)
- El estándar C++03 (ISO/IEC 14882:2003):
- 1.4 Implementation compliance [intro.compliance](p: 3)
- 3.6.1 Main function [basic.start.main](p: 43)
- 17.4.1.3 Freestanding implementations [lib.compliance](p: 326)
[editar] Véase también
| Documentación de C de Conformidad
|