繁体   English   中英

遵守C \\ C ++标准有哪些责任?

[英]What responsibilities are to comply C\C++ standard?

有点愚蠢的问题。 例如,我已经读过,在C11中增加了对线程的支持。 然后,例如我的STM32F4的GCC编译器说,它支持C11标准。 那么,现在是否意味着没有操作系统我将实现线程支持??? 但它怎么可能?

另一个例子 - 即使没有OS的内存管理,STM32的g ++也支持std :: vectors和IT WORKS。 这意味着一些内存管理器在内部编译器? 或不?

有两种C实现 - 托管实现,提供标准库,以及独立实现,只需要提供核心语言和最少数量的头。 嵌入式系统的实现通常是独立的。 在C11规范的第4节中有详细描述。

更重要的是,即使在托管实现中也可以省略许多功能。 特别是,线程支持是可选的(省略线程支持的托管实现必须定义宏__STDC_NO_THREADS__ )。 这在规范的第6.10.8.3节中描述。

那么,现在是否意味着没有操作系统我将实现线程支持???

这意味着指定了语言,以便可以正确地编写多线程程序,并在访问共享数据时具有良好定义的同步; 并且完整的托管实现应该提供线程库。 这并不意味着所有实现都允许多个线程:这将取决于底层系统的支持。

这意味着一些内存管理器在内部编译器?

是的,通常语言运行时包括堆管理器。 它将被分配一些内存(或者从OS获得,或者以一些其他依赖于系统的方式分配,可能只是在程序启动时作为静态块),然后它分成较小的块以支持程序内的动态分配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM