如何(以及谁可以)实现C委员会定义的标准库功能?

前端之家收集整理的这篇文章主要介绍了如何(以及谁可以)实现C委员会定义的标准库功能?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当C委员会在下一个语言标准中发布将成为标准库一部分的新功能时,他们还会发布一些源代码或某些关于如何实现该功能的指导?

我们以unique_ptr为例.语言委员会只是为该类模板定义了一个接口,让编译器供应商按需要实现它?如何实现标准库功能的实现过程.

任何人都可以为没有支持的平台实现标准库的部分吗?假设我想实现C标准库的一些很酷的功能,以便在微控制器环境中使用它.我怎么能这样做?我应该在哪里寻找信息?如果我决定将项目开源,我可以这样做吗?我是否需要完全遵循标准所说的内容,或者我可以编写不合规的版本?

解决方法

通常情况下,

>每个新的库功能都通过proposal.
>如果提案提交给C委员会的图书馆演变工作组,它将经历一系列迭代(我所知道的“艰难的基础”).
>它经历了一系列细化过程,如here所述
>如果它需要(TS)技术规范(从C11开始),它就会被烘焙.例如,#include< filesystem>在C 17之前的文件系统TS中.
>我相信委员会喜欢的一件事是实施经验.
>更多信息可在ISOCpp site上找到

那么,关于实施:

>有许多“库特征”无法纯粹作为库实现.他们需要编译器支持.在这些情况下,编译器提供了可以挂钩的“内在”.以例如,clang提供intrinsics for certain type_traits
>大多数库功能都有一些实施经验,主要来自Boost libraries.
>您实际上可以查看编译器附带的默认标准库的源代码

> libc++为Clang
> libstdc++为海湾合作委员会

>遗憾的是,大多数实现使用了大量的下划线.主要是因为它们保留供“标准库”使用.

Can anyone implement parts of the standard library for a platform that doesn’t have support for it yet?

是的,您可以,到目前为止,您的编译器支持该平台,并且平台或操作系统提供可用的API.例如. std :: cout,std :: ifstream的元素以及更多需要特定于平台的支持.

Let say I would like to implement some cool features of the C++ standard library to use it on a microcontroller environment. How could I do that?

您可以查看其他人的代码并从那里开始.我们向巨人学习.一些开源示例:

> ETL
> StandardCPlusPlus
> uClib++

How could I do that? Where should I look for information?

>您可以查看将该功能引入C库的论文.例如,std :: optional有一个独立的实现here,它在提案阶段用作参考实现.
>您可以检查标准库,并进行费力的研究.

猜你在找的C&C++相关文章