#define INTRODUCTION 52
// 向着星辰与深渊,欢迎来到 mdr 的 C 语言教程!
#define INFORMATION 'C'
// B 站账号 Minsecrus
// GitHub 账号 Minsecrus
// QQ 交流群 885719573
#include <stdio.h>
int main(int argc, char* argv[]){
printf("%d %c", INTRODUCTION, INFORMATION);
return 0;
}
- 这里是 Mdr's C Tutorial,欢迎来这里共同学习
- 此仓库中文档的定位是教程讲义:
对于贡献者,意味着无需引导和废话,只需讲干货;
对于读者,意味着阅读这些文档可以快速获得与C 语言以及计算机科学相关知识 - 本教程以及本讲义的目标:在准确的基础上力争简洁和生动
- 此教程并非一时兴起而作,实则怀“为往圣继绝学,为万世开太平”之愿,深思熟虑打造而成
- 得天独厚者,替天行善!
- 点此进入 总纲;
- 点此进入 关于本教程;
- 文档规范中列举了本仓库 markdown 文档的规范;
- 代码规范中列举了本仓库 C 语言代码的规范;
- 对预期读者的要求中列举了读者需要具备的一些前置知识;
- 鸣谢名单展示本仓库文档或代码的贡献者以及本教程的赞助者。
- 标题由一级标题开始,依次递减;
- 标题层级不应过多,如果出现该情况,可以拆分成多篇文章;
一般地,标题层级不应超过四级; /教程
和/杂项/工具和环境
文件夹里的文档,除一级标题之外的标题应有编号:- 二级标题前应有
1.
2.
等编号,数字后加小数点; - 三级标题前应有
1.1
1.2
等编号,末尾不要加小数点; - 四级标题前应有
1.1.1
1.1.2
等编号,末尾不要加小数点;
- 二级标题前应有
- 代码块和列表前后各有一个空行;文件结尾要有一个空行;文件任何位置不得存在连续两个空行;
- 段落和段落之间有一个空行;只换行不换段落,无空行,在前一行结尾加两个空格;
- 强调用
** **
标识,次强调 用_ _
标识,代码块
用` `
标识; - 引文和注释用
>
标识;书名和文章名用** **
标识; ` `
$ $
前后各空一个空格,但中文标点前后无需加空格;- 中西文字符,或者中文和数字之间加一个空格;
- 在中文上下文中用全角标点,比如全角小括号,全角冒号等;不要省略段尾句号;
- 要正确使用标点符号,分清顿号、逗号、分号和句号,尤其避免一逗到底;
- 分清的地得和他她它
- 仅在必要时使用数量词(尤其警惕一个的不恰当使用)
- 在术语 (Terminology) 首次出现的时候在半角小括号 内给出对应的外来语,同时给出首字母缩略语 (Acronym)。这些外来语通常对应概念 (Concept) 的原文 ,希望有助于读者明确分辨词语的含义:
- 专有名词需大写;
- 图片统一放在
/images/
目录下,并采用绝对路径引入:- 截图统一采用 PNG 格式,命名为三位数字,如:
001.png
; - 拍照统一采用 JPEG 格式,命名为不带前导零的数字,如:
1.jpg
;
- 截图统一采用 PNG 格式,命名为三位数字,如:
- 在每篇文档结尾写出引用内容的出处;
- 语言风格:
- 使用 正式的中文白话,不用口头语;
- 杜绝语病;
- 尽量不用 反问,设问和借喻;
- 用清晰的修饰限定成分,避免含混不清;不用过于夸张的修饰限定成分;有数据支持时要列举数据;
- 避免带有主观性的措辞;避免连续的词表示相同意思;
- 保证仓库中所有文档语言风格一致。
-
如果是项目代码,需要构建系统完成编译运行,须将必要的相关文件放入对应目录,如
CMakeLists.txt
和xmake.lua
等; -
源文件后缀名为
.c
,头文件后缀名为.h
; -
代码需保证在新版 GCC 和 Clang 上以新版 C 语言标准编译通过,“语法和标准库”部分的代码还需做到开启
-Wall
和-Wextra
无警告; -
代码格式化样式:基于 LLVM 样式,以 4 空格缩进;
{ "BasedOnStyle": "LLVM", "IndentWidth": 4 }
-
标识符的命名:
- 使用惯例,尤其禁止使用拼音;
- 宏名所有字母均大写,单词之间以下划线分割;
- 其余标识符所有字母均小写,单词之间以下划线分割;
-
if
else
for
while
必须跟随复合语句。
- 独立思考;
- 勤于搜索(尤其是出现较多关联概念时);
- 理解中文白话,最好有一定的英语水平(建议达到 CEFR B2)但不强制,最好有一定的数学水平(高中数学 + 数理逻辑基础 + 微积分 + 基础的概率论 + 基础的数论 + 基础的图论)但不强制;
- Mdr (GitHub - Minsecrus)
- @幻 (GitHub - huan201)
- JuaJuanchi (GitHub - JuaJuanchi)
- Enoch.驊 (GitHub - gngtwhh)
- No (CNBlogs - Kroner)(GitHub - Kroner)
- Xly (GitHub - LY-Xiang)(GitHub - hfsz2313)
- 革匊习习中 (GitHub - Juvwxyz)
- 0x7E7
- FHU-yezi (GitHub - FHU-yezi)
- 菲露露 (GitHub - LovelyLavender4)
- XIAOYI12 (GitHub - xiaoyi1212)
- WHITE TREE (GitHub - VinbeWan)
- Min0911Y (GitHub - min0911Y)
- A4-Tacks (GitHub - A4-Tacks)
- Telecomadm (GitHub - telecomadm1145)
- ChatRBQ (GitHub - fawdlstty)
- Kill (GitHub - Killcerr)
- 艾猫工作室 (aymao.com)
- FrankHB (GitHub - FrankHB)
- Jajuju (GitHub - frederick-vs-ja)
- Fresky (GitHub - FreskyZ)
- 兔兔
- ISO C standard
- C++ 参考手册
- C Primer Plus (ISBN 978-0-321-92842-9)
- 算法导论 (ISBN 978-7-111-40701-0)
- Let's Build a Simple Database
- pldocs
- 陶哲轩实分析 (ISBN 978-7-115-48025-5)
- OSDEV.org