# c-lang-ecosystem **Repository Path**: deng-yongsheng/c-lang-ecosystem ## Basic Information - **Project Name**: c-lang-ecosystem - **Description**: C/C++语言生态 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-07-01 - **Last Updated**: 2023-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # C/C++语言生态 ## 标准 ### C语言标准 + K&R C + 贝尔实验室Dennis Rithie和 基于Kenneth Lane Thompson的B语言。 + ANSI C89 + ISO C90 + Keil4: 局部变量必须在函数的开头部分声明 + ISO C99 + 提供全部类型的数学函数 + C++ 风格注释(`//`) + C11 + 内存对齐[Learn/Microsoft C++、C 和 汇编程序/C 语言/C 语言参考/ 对齐](https://learn.microsoft.com/zh-cn/cpp/c-language/alignment-c?view=msvc-170) 参考资料: [C语言标准——C89、C99、C11、C17、C2x ...](https://zhuanlan.zhihu.com/p/363380373) [肯尼斯·蓝·汤普森](https://baike.baidu.com/item/%E8%82%AF%E5%B0%BC%E6%96%AF%C2%B7%E8%93%9D%C2%B7%E6%B1%A4%E6%99%AE%E6%A3%AE/58101868?fr=ge_ala) [为什么C语言C89标准出台了20多年了,还仍然是主流?](https://www2.zhihu.com/question/24788254) ### C++语言标准 + C++ 98 + C++标准第一版 + STL + 容器 + 算法 + 迭代器 + C++ 11 + 线程和同步 + 智能指针 + auto + C++ 14 + lambda + C++ 17 + filesystem + C++ 20 + constraint与concept + 协程 + C++ 23 + 无ASIO 参考资料: [C标准&C++标准](https://blog.csdn.net/lunix01/article/details/115272578) ## 编译器 ### GCC GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言编译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等。) [1] GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。此处,“自由”的含义是它尊重用户的自由 [2] 。 + MinGW MinGW,是Minimalist GNU for Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。 + CubeIDE + MounRiver ### MSVC Microsoft Visual C++(简称Visual C++、MSVC、VS或VC)是微软公司的免费C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。VC++集成了便利的除错工具,特别是集成了微软Windows视窗操作系统应用程序接口(Windows API)、三维动画DirectX API,Microsoft .NET框架。 参考资料: + [百度百科:Microsoft Visual C++](https://baike.baidu.com/item/Microsoft%20Visual%20C++/8646587) ### LLVM + Clang ### ARMCC ARM公司开发的一款编译器,在2005年收购 KEIL 公司后,这块编译器就集成在KEIL IDE里面,以及自家开发的ARM DS5,编译器以及IDE相关的文档可以去ARM公司的官网下载。 参考资料: + [详解三大编译器:gcc、llvm 和 clang](https://zhuanlan.zhihu.com/p/357803433) ## 集成开发环境 ### Visual Studio/Visual Studio Code C、C++、C#、F#、J# 参考资料: + [百度百科:Microsoft Visual Studio](https://baike.baidu.com/item/Microsoft%20Visual%20Studio/4735644?fr=ge_ala) + [Visual Studio 2022](https://visualstudio.microsoft.com/zh-hans/) ### Eclipse Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,它由非营利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。 + 使用Java语言开发 + 开放源代码 + 跨平台的IDE + Java语言早期的主流开发环境 + 支持扩展C语言 ### Clion JetBrain的跨平台的C/C++开发环境 CLion的优点 + CLion能够及时查错,不需要编译结束以后才报错(这个和vscode有些类似); + CLion的调试(debug)界面比dev要清晰不少,能显示更多的变量值,而且入手很简单,看起来也清楚( + Clion具有代码补全功能(可以剩下一些打变量(函数)名称的时间,vscode也可以) 和vscode比一比(先吐槽一下vscode的环境配置,实在有点复杂,还得自己下mingw编译器,更多的功能(比如调试)还需要自己重新再配置) Clion的不足 + Clion的控制台能显示返回值(虽然dev也可以,vscode似乎需要进一步设置) + Clion不仅可以及时报错,还有更进一步的警告功能(下面会详细介绍),这个功能能进一步帮你避免掉很多奇怪的问题; + Clion可以更方便进行调试(debug) ### XCode Apple公司的官方开发环境 ## 构建工具 ### GNU Make Make 有很多版本,其中 GNU Make 是一个自由软件。这里介绍一下它。 GNU Make 是一个控制计算机程序从代码源文件到可执行文件或其他非源文件生成过程的工具。 控制命令通过称为makefile 的文件传递给 make工具。makefile 记录了如何生成可执行文件等命令 + [GNU Make工具(一)简介](https://blog.csdn.net/FJDJFKDJFKDJFKD/article/details/86479281) + [GNU make/Makefile 简明实用教程](https://zhuanlan.zhihu.com/p/376493209) + [官方文档](https://www.gnu.org/software/make/manual/make.html) ### CMake ### Autotools GNU构建系统,是利用脚本和make程序在特定的平台上构建软件的过程。一般过程是configure,make,make install 三部曲。这种方式成为一种习惯,被广泛使用。 为了简化可移植构建的难度,早期有一套AutoTools的工具帮助程序员构建软件。configure,make,make install三部曲,大多都是基于Auto Tools来构建的。Auto Tools是GNU程序的标准构建系统。 参考资料: + [简书:Autotools 工具](https://www.jianshu.com/p/b3b0a090a01e) + [CSDN: Autotools](https://blog.csdn.net/qq_27870421/article/details/99621737) ### 其它 + Ninja + Bazel + SCons ## 包管理 ### CMake(跨平台的安装(编译)工具) CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。 参考资料: + [百度百科:cmake](https://baike.baidu.com/item/cmake/7138032?fr=ge_ala) + [CMake官网](https://cmake.org/) ### Vcpkg VCPKG是微软 C++ 团队开发的适用于 C 和 C++ 库的跨平台开源软件包管理器,它大大简化了 Windows、Linux 和 macOS 上第三方库相关的下载和配置操作,目前已有超过1600个第三方库可以通过vcpkg来安装。 [VCPKG简介](https://zhuanlan.zhihu.com/p/387296683) ### Conan ## 文档管理 ### Doxgen ### Sphinx [sphinx自动化提取c项目代码注释](https://www.jianshu.com/p/54b829a9bf33) ## 库和框架 + Boost + QT + [awesome-embedded-software](https://github.com/iDoka/awesome-embedded-software)