该文中讲了
C有标准, 有些时候会升级(就像armv6 armv7 armv8 一样),有C99, C11
C++有标准, 有些时候会升级(就像armv6 armv7 armv8 一样),有C++03, C++11, C++14
标准 并不对应代码 , 我们需要将标准转换为代码,并能够解析代码
标准涉及到两个东西
编译器
标准对应的代码 : 标准库
对于C 是 C标准库和ISO C标准库 // C标准库和ISO C标准库 是一样的
对于C++ 是 C++标准库
C标准库的实现有很多种
GNU组织 实现了一种, 叫 glibc
apple公司实现了一种, 位于 libSystem 中
微软公司 实现了 一种,位于 CRT
google公司 实现了一种,叫Bionic
嵌入式中一般用 uClibc-ng, musl libc和diet libc // 提供更小的二进制文件和更少的内存占用
C++标准库的实现有很多种
GNU组织实现了一种,叫libstdc++
apple公司没有实现,但使用了libc++
微软公司 实现了 一种,位于 CRT
google公司没有实现,提供了多种 libc++ libstdc++ STLport
各大linux发行版用了C/C++标准库的哪些实现
ubuntu 16.04 用了 glibc 和 libstdc++
我们必需使用标准库吗
可以不用
只要在你的程序中不引入它们的任何一个头文件,就代表了不用标准库
但是你实现工程的时候就需要通过一些提供的系统调用使用某种方法与操作系统互动。
其实 标准库中的函数/方法在底层实现的时候 也是 用 系统调用(与硬件设备交互)做的
嵌入式可以考虑不使用标准库(但是一般没必要)
极致优化 可以考虑 不使用标准库(这个就很有必要了)
C标准在哪里
https://www.zhihu.com/question/20725002
c语言有标准文档 。ISO国际组织官网能搜索到相关标准号是ISO/IEC 9899:2011文件
想要下载这些pdf文档居然还要花钱,198的瑞士法郎换成人民币是1300左右
C语言的虽然标准是有国际标准化组织制定的,但是具体编译器的实现和标准制定还是有所不同的
比如GNU GCC 编译器就添加了自己的语法规则,还有嵌入式领域的Keil C51编译器(多定义了自己的数据类型),还有基于llvm框架的Clang编译器,还有和Visual Studio2015集成的VC++ Compiler(包含了微软自定义的内联汇编的语法)都有各自的特殊语法规则,但大体来说每个c语言编译器还是实现了标准文档里面的大部分特性
去找这些编译器官方文档,也是可以。如果用GNU GCC就它的官方网站下载他的文档吧
要写可移植的代码的话最好只看标准文档,另外虽然正式稿收费,但是草案是免费的,在正式稿出版之前的最后一版草案往往和正式标准基本没有区别,所以作为一般学习者使用标准草案才是上策
https://stackoverflow.com/questions/81656/where-do-i-find-the-current-c-or-c-standard-documents
https://en.cppreference.com/w/c
搞了C11的草案,分享给大家
链接:https://pan.baidu.com/s/1aCr7-gpw56qIXDjW82XwPQ
提取码:np0b
搞到了 gnu c 的介绍(其中包括C标准的实现部分介绍)
地址 : https://gcc.gnu.org/onlinedocs/gcc/index.html
好像没有 pdf 格式 // https://www.zhihu.com/question/24151438
上一篇:OK6410A 开发板 (八) 79 linux-5.11 OK6410A schedule总览
下一篇:OK6410A 开发板 (七) 7 buildroot-2021.02 OK6410A 用户空间的浮点处理过程
推荐阅读最新更新时间:2024-10-11 12:41
设计资源 培训 开发板 精华推荐
- 3pin风扇4pin-pwm
- LDK120C32R 3.2V低压降稳压器典型应用固定电路
- STEVAL-POEL45W1,具有蓝牙低功耗 (BLE) 控制功能的以太网供电 (PoE) 供电 45W LED 驱动器参考设计
- MAXREFDES1043:基于MAX30102的 SpO2 监测方案
- 使用 Analog Devices 的 LM337T 的参考设计
- EVAL-CN0221-EB1Z,基于 USB 的热电偶温度测量系统评估板,基于 ADuCM361 ARM Cortex-M3 MCU
- NCV2904DMR2G高阻差分放大器典型应用
- LTC3890MPUH 高效 8.5V 双相降压转换器典型应用电路
- MAXREFDES1152:基于MAX11270的四通道通用模拟输入
- 四轴NT32