自立与有宿主实现
来自cppreference.com
< cpp
C++ 标准定义了二种实现:有宿主 (hosted) 与自立 (freestanding) 实现。 C++ 标准对有宿主实现所规定的标准库头文件集合比对自立实现所规定的大很多。自立实现中的执行可以没有操作系统。
针对多线程执行与数据竞争的规定
|
(C++11 起) |
[编辑] 针对 main 函数的要求
| 自立 | 有宿主 |
|---|---|
| 自立实现中,是否要求程序定义 main 函数是由实现定义的。启动与终止过程是由实现定义的;启动过程中包含执行具有静态存储期的命名空间作用域对象的构造函数;终止过程中包含执行具有静态存储期的对象的析构函数。 | 有宿主实现中,程序必须包含一个名为 main 的全局函数。程序执行时启动一个主执行线程,在其中调用 main 函数,并且具有静态存储期的变量将在其中被初始化和销毁。
|
[编辑] 针对标准库头文件的规定
自立实现拥有由实现定义的头文件集合。此集合至少包含下表中的头文件:
| 类型 | <cstddef> |
| 实现的属性 | <limits> <cfloat> <climits> (C++11 起) <version> (C++20 起) |
| 整数类型 | <cstdint> (C++11 起) |
| 启动与终止 | <cstdlib> (部分)[1] |
| 动态内存管理 | <new> |
| 类型鉴别 | <typeinfo> |
| 异常处理 | <exception> |
| 初始化器列表 | <initializer_list> (C++11 起) |
| 其他运行时支持 | <cstdarg> |
| 基础库概念 | <concepts> (C++20 起) |
| 类型特征 | <type_traits> (C++11 起) |
| 原子类型 | <atomic> (C++11 起) |
| 位操作 | <bit> (C++20 起) |
| <ciso646> (C++11 起)(C++20 前) | |
| 已弃用的头文件 | <cstdalign> <cstdbool> (C++11 起)(C++20 前) |
- ↑ 头文件
<cstdlib>的受支持版本应当至少声明函数 std::abort 、 std::atexit 、 std::exit 、 std::at_quick_exit 及 std::quick_exit (C++11 起) 。
[编辑] 引用
- C++17 standard (ISO/IEC 14882:2017):
- 4.1 Implementation compliance (p: 5)
- 4.7 Multi-threaded executions and data races (p: 15)
- 6.6.1 Main function (p: 66)
- 20.5.1.3 Freestanding implementations (p: 458)
- C++14 standard (ISO/IEC 14882:2014):
- 1.4 Implementation compliance (p: 5)
- 1.10 Multi-threaded executions and data races (p: 11)
- 3.6.1 Main function (p: 62)
- 17.6.1.3 Freestanding implementations (p: 441)
- C++11 standard (ISO/IEC 14882:2011):
- 1.4 Implementation compliance (p: 5)
- 1.10 Multi-threaded executions and data races (p: 11)
- 3.6.1 Main function (p: 58)
- 17.6.1.3 Freestanding implementations (p: 408)
- C++03 standard (ISO/IEC 14882:2003):
- 1.4 Implementation compliance (p: 3)
- 3.6.1 Main function (p: 43)
- 17.4.1.3 Freestanding implementations (p: 326)
[编辑] 参阅
| 遵从性 的 C 文档
|

