mirror of
https://github.com/Aexiar/c.git
synced 2024-10-22 14:05:45 +02:00
2024年10月9日 11:12
This commit is contained in:
parent
550c3966c8
commit
b04a2ecf24
@ -795,7 +795,7 @@ int main(){
|
||||
> * ① 上述的情况,在单片机和嵌入式领域更加常见。
|
||||
> * ② 总体而言,C 语言具有开放性,并且要适应不同的硬件平台,这使得不同厂商可以根据自己的需求来进行个性化开发/定制。
|
||||
|
||||
* 这也导致了一个非常棘手的问题,有的编译器遵守较新的 C 语言标准,有的编译器只能遵守较老的 C 语言标准,有的编译器还进行了很多扩展。比如:
|
||||
* 这也导致了一个非常棘手的问题,有的编译器遵守较新的 C 语言标准,有的编译器只能遵守较老的 C 语言标准,有的编译器还进行了很多扩展,比如:
|
||||
* GCC、LLVM/Clang 更新非常及时,能够支持最新的 C 语言标准。
|
||||
* MSVC 更新比较缓慢,迟迟不能支持新标准,例如:VC6.0、VS2010 都在使用 C89 标准,VS2015 部分支持 C99 标准。
|
||||
|
||||
|
@ -65,7 +65,7 @@
|
||||
# include <stdio.h>
|
||||
```
|
||||
|
||||
* ③ 预处理指令都是一行的,除非在行尾使用反斜杠,将其折行。
|
||||
* ③ 预处理指令都是一行的,除非在行尾使用反斜杠,将其折行,但强烈不建议这么干。
|
||||
|
||||
```c
|
||||
#include <std\
|
||||
@ -87,16 +87,44 @@
|
||||
```c
|
||||
int main () {
|
||||
// 一般不允许写在这里
|
||||
#include <stdio.h>
|
||||
#include <stdio.h> // [!code warning]
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## 1.4 为什么 C 语言需要预处理?
|
||||
|
||||
* C 语言并没有一个官方机构,也不属于哪个公司,它只有一个制定标准的委员会,任何其他组织或者个人都可以开发 C 语言的编译器,而这个编译器要遵守哪个 C 语言标准,是 100% 遵守还是部分遵守,并没有强制性的措施,也没有任何约束。
|
||||
|
||||
> [!NOTE]
|
||||
>
|
||||
> - ① 各个厂商可以根据自己的利益和喜好来开发编译器。
|
||||
> - ② 市场和用户的选择通常是推动编译器开发者遵循标准的主要动力。
|
||||
|
||||
* 并且,不同硬件平台之间也存在差异,这会导致内存管理方式、寄存器、指令集等都有所不同,为了确保 C 语言程序能在这些硬件平台运行,就得针对该平台开发/定制不同的编译器。
|
||||
|
||||
> [!NOTE]
|
||||
>
|
||||
> - ① 上述的情况,在单片机和嵌入式领域更加常见。
|
||||
> - ② 总体而言,C 语言具有开放性,并且要适应不同的硬件平台,这使得不同厂商可以根据自己的需求来进行个性化开发/定制。
|
||||
|
||||
* 这也导致了一个非常棘手的问题,有的编译器遵守较新的 C 语言标准,有的编译器只能遵守较老的 C 语言标准,有的编译器还进行了很多扩展,比如:
|
||||
* GCC、LLVM/Clang 更新非常及时,能够支持最新的 C 语言标准。
|
||||
* MSVC 更新比较缓慢,迟迟不能支持新标准,例如:VC6.0、VS2010 都在使用 C89 标准,VS2015 部分支持 C99 标准。
|
||||
|
||||
> [!NOTE]
|
||||
>
|
||||
> 微软官方给出的答复:最新的标准已经在 C++ 中支持了,C 语言就没必要再重复了。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 第二章:宏定义
|
||||
|
||||
## 2.1 概述
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user