独立与有宿主实现

来自cppreference.com
< cpp

C++ 标准定义二种实现:有宿主 (hosted) 独立 (freestanding) 实现。 C++ 标准对有宿主实现要求的标准库头文件集合比对独立实现要求的大很多。独立实现中的执行可以没有操作系统。

目录

多线程执行与数据竞争上的要求

独立 有宿主
独立实现下,程序能否拥有多于一个执行线程是实现定义的。 有宿主实现下, 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 前)
  1. 头文件 <cstdlib> 的受支持版本应当至少声明函数 std::abortstd::atexitstd::exitstd::at_quick_exitstd::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 文档