mirror of
https://github.com/Aexiar/c.git
synced 2024-10-22 14:05:45 +02:00
c
This commit is contained in:
parent
75338d363f
commit
be8b922c65
@ -33,6 +33,10 @@ export default defineConfig({
|
||||
markdown: { // markdown 配置
|
||||
math: true,
|
||||
lineNumbers: true, // 行号显示
|
||||
image: {
|
||||
// 开启图片懒加载
|
||||
lazyLoading: true
|
||||
},
|
||||
},
|
||||
themeConfig: {// 主题设置
|
||||
lastUpdatedText: '上次更新', // 上次更新显示文本
|
||||
|
@ -1,3 +1,15 @@
|
||||
:root {
|
||||
--vp-c-brand-1: #18794e;
|
||||
--vp-c-brand-2: #299764;
|
||||
--vp-c-brand-3: #30a46c;
|
||||
}
|
||||
|
||||
.dark {
|
||||
--vp-c-brand-1: #3dd68c;
|
||||
--vp-c-brand-2: #30a46c;
|
||||
--vp-c-brand-3: #298459;
|
||||
}
|
||||
|
||||
.medium-zoom-overlay {
|
||||
z-index: 20;
|
||||
}
|
||||
@ -7,10 +19,53 @@
|
||||
}
|
||||
|
||||
:root {
|
||||
|
||||
--vp-home-hero-name-color: transparent;
|
||||
--vp-home-hero-name-background: -webkit-linear-gradient(120deg, #bd34fe, #41d1ff);
|
||||
|
||||
/* hero标题渐变色 */
|
||||
--vp-home-hero-name-color: transparent;
|
||||
--vp-home-hero-name-background: -webkit-linear-gradient(120deg, #bd34fe, #41d1ff);
|
||||
|
||||
/*hero logo背景渐变色 */
|
||||
--vp-home-hero-image-background-image: linear-gradient(-45deg, #bd34fe 50%, #47caff 50%);
|
||||
--vp-home-hero-image-filter: blur(40px);
|
||||
}
|
||||
|
||||
|
||||
h1 {
|
||||
background: -webkit-linear-gradient(-45deg, #e43498 5%, #5ad7dd 15%);
|
||||
background-clip: text;
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
}
|
||||
|
||||
/* 提醒 */
|
||||
.note.custom-block.github-alert{
|
||||
border-color: var(--vp-c-indigo-3);
|
||||
}
|
||||
|
||||
/* 建议 */
|
||||
.tip.custom-block.github-alert {
|
||||
border-color: var(--vp-c-brand-1);
|
||||
}
|
||||
|
||||
/* 重要框 */
|
||||
.important.custom-block.github-alert {
|
||||
border-color: var(--vp-c-purple-1);
|
||||
}
|
||||
|
||||
/* 警告 */
|
||||
.warning.custom-block.github-alert {
|
||||
border-color: var(--vp-c-yellow-1);
|
||||
}
|
||||
|
||||
/* 注意 */
|
||||
.caution.custom-block.github-alert {
|
||||
border-color: var(--vp-c-red-1);
|
||||
}
|
||||
|
||||
|
||||
/* 禁止双指缩放 */
|
||||
body, html {
|
||||
touch-action: manipulation;
|
||||
|
@ -574,26 +574,61 @@ int main() { // 定义主函数
|
||||
|
||||
## 3.7 C 语言的版本选择
|
||||
|
||||
* 随着微型(个人)计算机的日益普及,出现了许多 C 语言版本(标准):
|
||||
### 3.7.1 概述
|
||||
|
||||
* 版本 1(K&R C):K&R C 指的是 C 语言的原始版本。1978年,C 语言的发明者布莱恩·柯林(Brian `K`ernighan)和丹尼斯·里奇(Dennis `R`itchie)合写了一本著名的教材《C 编程语言》(The C programming language)。
|
||||
* C 语言是在 B 语言的基础上改进而来的,目的是为了更好地开发 Unix 操作系统。到了 1973 年,Unix 的大部分功能都被 C 语言重写,这标志着C语言的初步成熟,因为它可以用于大型项目了。
|
||||
* 后来,C语言被多次改进,越来越强大,为了规范 C 语言的特性和功能,人们发布了多个 C 语言标准。
|
||||
|
||||
>[!NOTE]
|
||||
>
|
||||
>由于 C 语言还没有成文的语法标准,这本书就成了公认标准,以两位作者的姓氏首字母作为版本简称 “K&R C”。
|
||||
### 3.7.2 版本 1(K&R C)
|
||||
|
||||
* K&R C 指的是 C 语言的原始版本。1978 年,C 语言的发明者布莱恩·柯林(Brian `K`ernighan)和丹尼斯·里奇(Dennis `R`itchie)合写了一本著名的教材《C 编程语言》(The C programming language)。
|
||||
|
||||
>[!NOTE]
|
||||
>
|
||||
>由于 C 语言还没有成文的语法标准,这本书就成了公认标准,以两位作者的姓氏首字母作为版本简称 “K&R C”。
|
||||
|
||||
### 3.7.3 版本 2(ANSI C,又称 C89 或 C90)
|
||||
|
||||
* 到了 80 年代,C 语言越来越流行,广泛被业界使用,从大型主机到小型微机,各个厂商群雄并起,推出了多款 C 语言的编译器。这些编译器根据行业和厂商自己的需求,进行了各种扩展,C 语言进入了春秋战国时代,逐渐演变成一个松散杂乱的大家族。
|
||||
* 为统一 C 语言版本,1989 年,美国国家标准协会(ANSI)制定了一套 C 语言标准,并于次年被国际标准化组织(ISO)通过。它被称为 “ANSI C”,也可以按照发布年份,称为 “C89 或 C90”。
|
||||
|
||||
> [!NOTE]
|
||||
>
|
||||
> 目前常用的编译器,如:MSVC(Microsoft Visual C++)、GCC、LLVM Clang 等,都能很好地支持 ANSI C 的内容。
|
||||
|
||||
### 3.7.4 版本 3(C99)
|
||||
|
||||
* C 语言标准的第一次`大型修订`,发生在 1999 年,增加了许多语言特性,如:双斜杠( `//` )的注释语法,可变长度数组、灵活的数组成员、复数、内联函数和指定的初始值设定项,这个版本称为 C99,`是目前最流行的 C 版本`。
|
||||
|
||||
> [!NOTE]
|
||||
>
|
||||
> 这个时候的 C 语言编译器基本已经成熟,各个组织对 C99 的支持所表现出来的兴趣不同:
|
||||
>
|
||||
> * 当 GCC 和其它一些商业编译器支持 C99 的大部分特性的时候。
|
||||
> * 微软和 Borland 却似乎对此不感兴趣,或者说没有足够的资源和动力来改进编译器。
|
||||
>
|
||||
> 最终导致不同的编译器在部分语法上存在差异。典型的例子就是:ANSI C 规定,只能用常量表示数组的长度,而 C99 取消了这个限制,数组的长度也可以用变量表示(可变长度数组)。对于 C99 的这个新改动,GCC 和 Clang 是支持的,而 MSVC 却不支持。
|
||||
|
||||
### 3.7.5 版本 4(C11)
|
||||
|
||||
* 2011 年,标准化组织再一次对 C 语言进行修订,增加了_Generic、static_assert 和原子类型限定符,这个版本称为 C11。
|
||||
|
||||
> [!NOTE]
|
||||
>
|
||||
> * ① 需要强调的是,修订标准的原因并不是因为原标准不能用,而是需要跟进新的技术。
|
||||
> * ② 支持此标准的主流 C 语言编译器有 GCC、LLVM Clang、Intel C++ Compile 等。
|
||||
|
||||
### 3.7.6 版本 5(C17)
|
||||
|
||||
* C11 标准在 2017 年进行了修补,但发布是在 2018 年。新版本只是解决了 C11 的一些缺陷,没有引入任何新功能,这个版本称为 C17。
|
||||
|
||||
### 3.7.7 版本 6(C23)
|
||||
|
||||
* 2023 年发布,计划进一步增强安全性,消除实现定义的行为,引入模块化语言概念等新特性,使 C 语言在安全和可靠性方面有重大提高。
|
||||
|
||||
* 版本 2(ANSI C,又称 C89 或 C90):C 语言的原始版本非常简单,对很多情况的描述非常模糊,加上 C 语法依然在快速发展,要求将 C 语言标准化的呼声越来越高。1989 年,美国国家标准协会(ANSI)制定了一套 C 语言标准,并于次年被国际标准化组织(ISO)通过。它被称为 “ANSI C”,也可以按照发布年份,称为 “C89 或 C90”。
|
||||
|
||||
* 版本 3(C99):C 语言标准的第一次`大型修订`,发生在 1999 年,增加了许多语言特性,比如:双斜杠( // )的注释语法,可变长度数组、灵活的数组成员、复数、内联函数和指定的初始值设定项,这个版本称为 C99,`是目前最流行的 C 版本`。
|
||||
* 版本 4(C11):2011 年,标准化组织再一次对 C 语言进行修订,增加了_Generic、static_assert 和原子类型限定符。这个版本称为 C11。
|
||||
|
||||
> [!NOTE]
|
||||
>
|
||||
> 需要强调的是,修订标准的原因并不是因为原标准不能用,而是需要跟进新的技术。
|
||||
|
||||
* 版本 5(C17):C11 标准在 2017 年进行了修补,但发布是在 2018 年。新版本只是解决了 C11 的一些缺陷,没有引入任何新功能。这个版本称为 C17。
|
||||
* 版本 6(C23):2023 年发布,计划进一步增强安全性,消除实现定义的行为,引入模块化语言概念等新特性,使 C 语言在安全和可靠性方面有重大提高。
|
||||
* ……
|
||||
|
||||
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.1.0",
|
||||
"@types/node": "^22.3.0",
|
||||
"markdown-it-mathjax3": "^4.3.2",
|
||||
"vitepress": "^1.3.2"
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user