# starter-c-lang **Repository Path**: wushifeng/starter-c-lang ## Basic Information - **Project Name**: starter-c-lang - **Description**: c语言使用的资料集 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-27 - **Last Updated**: 2026-01-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # C语言标准-C89 C99 C11 C17 - https://www.open-std.org/JTC1/SC22/WG14/www/projects#9899 ``` The primary output of WG14 is ISO/IEC 9899, the C Standard. The following is a list of revisions to ISO/IEC 9899 that the committee has produced: Revision Publication Similar draft C2y Not available N3550 [2025-05-04] C23 ISO/IEC 9899:2024 N3220 [2024-02-22] (early C2y draft) C17 ISO/IEC 9899:2018 N2310 [2018-11-11] (early C23 draft) C11 ISO/IEC 9899:2011 N1570 [2011-04-04] C99 ISO/IEC 9899:1999 N1256 [2007-09-07] C95 ISO/IEC 9899:1990/Amd 1:1995 Not available C90 ISO/IEC 9899:1990 Not available C89 ANSI X3.159-1989 NIST publication https://www.chinesehongker.com/forum.php?mod=viewthread&tid=23884 + C89 考虑到标准化的重要,ANSI(American National Standards Institute)制定了第一个 C 标准,在1989年被正式采用(American National Standard X3.159-1989),故称为 C89,也称为 ANSI C。 该标准随后被 ISO 采纳,成为国际标准(ISO/IEC 9899:1990)。 C89 的主要改动: 定义了 C 标准库; 新的预处理命令和特性; 函数原型(prototype); 新关键字:const、volatile、signed; 宽字符、宽字符串和多字节字符; 转化规则、声明(declaration)、类型检查的改变。 + C95 这是对 C89 的一个修订和扩充,称为“C89 with Amendment 1”或 C95,严格说来并不是一个真正的标准。 C95 的主要改动: 3个新标准头文件:iso646.h、wctype.h、wchar.h; 一些新的标记(token)和宏(macro); 一些新的 printf/scanf 系列函数的格式符; 增加了大量的宽字符和多字节字符函数、常数和类型。 + C99 1999年,在做了一些必要的修正和完善后,ISO 发布了新的 C 语言标准,命名为 ISO/IEC 9899:1999,简称“C99”。 C99 的主要改动: 复数(complex); 整数(integer)类型扩展; 变长数组; Boolean 类型; 非英语字符集的更好支持; 浮点类型的更好支持; 提供全部类型的数学函数; C++ 风格注释(//)。 + C11 2007 年,C语言标准委员会又重新开始修订C语言,到了 2011 年正式发布了 ISO/IEC 9899:2011,简称为 C11 标准。 C11 标准新引入的特征尽管没 C99 相对 C90 引入的那么多,但是这些也都十分有用,比如:字节对齐说明符、泛型机制(generic selection)、对多线程的支持、静态断言、原子操作以及对 Unicode 的支持。 ``` - 标准关键特性和例子: - C89: c89.c - C99: c99.c - C11: c11.c + Modern C https://gustedt.gitlabpages.inria.fr/modern-c/#org072e59d https://product.dangdang.com/652220075.html 现代C(概念剖析和编程实践) # Windows上C语言 ## 基础工具 - git bash - make - gcc ``` https://gitee.com/wushifeng/devenv/blob/master/init.sh 安装git bash,放置make.exe https://cmake.org/download/ 1 windows下的gcc工具链 https://www.zhihu.com/question/22137175 Cygwin 和MinGW MinGW 更专注于 Windows 平台的本地开发 Cygwin 则更侧重于为 Windows 环境提供 Unix/Linux 环境的模拟 下载 MinGW Distro,这是 MinGW 的一个便捷版,可以免去平常安装 MinGW 了再从 mirror 上拉取软件包的麻烦操作 https://blog.csdn.net/techfield/article/details/82896008 https://nuwen.net/mingw.html https://nuwen.net/files/mingw/history/mingw-19.0.exe GCC 13.2.0 上面的gcc这个有点老 https://winlibs.com/#download-release 这里有新的gcc GCC 15.2.0 https://github.com/brechtsanders/winlibs_mingw/releases/download/15.2.0posix-13.0.0-ucrt-r1/winlibs-x86_64-posix-seh-gcc-15.2.0-mingw-w64ucrt-13.0.0-r1.7z 2 clang/clangd ``` Clang 是一个编译器前端,主要用于处理 C、C++、Objective-C 和 Objective-C++ 代码。它将源代码转换成中间表示(IR),然后由后端进一步处理成机器代码。Clang 的开发始于 2007 年,由 Chris Lattner 和他的团队在苹果公司启动,最初的动机是为了替代 GCC,解决 GCC 在编译速度、内存使用和错误信息方面的不足。 Clangd 是一个基于 Clang 编译器框架的语言服务器,专门为 C、C++ 以及 Objective-C 开发。它实现了 Language Server Protocol (LSP),提供代码补全、语法检查、代码导航和重构等功能。 1) clang/clangd/llvm安装 https://mirrors.tuna.tsinghua.edu.cn/github-release/llvm/llvm-project/LLVM%2021.1.2/LLVM-21.1.2-win64.exe clang添加到系统PATH环境变量中。 2 插件 llvm-vs-code-extensions.vscode-clangd 插件安装 clangd helps developers write, understand and improve C/C++ code by providing: code completion compile errors and warnings go-to-definition and cross references hover information and inlay hints include management code formatting simple refactorings 2 微软编译工具链 visual studio安装即带 https://visualstudio.microsoft.com/zh-hans/downloads/ ``` ## IDE + IDE visual studio vs code + AI IDE trae https://www.trae.com.cn/ qoder https://qoder.com/ ## MS Safe C/C++ SDL + SDL(安全开发生命周期)是微软提出的一套软件开发安全规范,旨在通过静态代码分析、运行时检测等手段,在开发阶段识别并修复潜在的安全漏洞。 + 在VS2012创建项目时,会有一个勾选项,叫做“安全开发生命周期(SDL)检查”,这个东西是微软在VS2012新推出的东西,为了是能更好的监管开发者的代码安全,如果勾选上这一项,那么他将严格按照SDL的规则编译代码,会有一些以前常用的函数无法通过编译,比如在VS2010中的scanf是warning那么在VS2012中就是error了。 - https://yiyan.baidu.com 中输入 C语言 /sdl(启用附加安全检查)概要下SDL相关的背景和需要修改的内容 查看详情 ## 编译工具链 - gcc: 这个支持最完善 ``` 工程运行 发布模式 make run make run-c89 make run-c99 make run-c11 跟踪模式: -g 编译加入了调试信息 make run-debug make run-debug-c89 make run-debug-c99 make run-debug-c11 make clean vscode 安装 eclipse-cdt.cdt-gdb-vscode esbenp.prettier-vscode 插件,vscode系列可以调试【这个插件stdout stdin不支持】 .vscode\launch.json 配置了对 c89.c 的编译和调试的配置 ms-vscode.cpptools 这是微软的插件,但是trae不支持 【https://code.visualstudio.com/docs/languages/cpp】 ``` - 微软msvc: MSVC C11 C17 ``` ``` # Linux上C语言 ## WSL ## IDE Remote