第一章 初识C语言

4/16/2022
  1. 1章 初识C语言 >>

 

  1. C的标准 >>

 

  1. K&R C 或经典C >>
    K&R C 或经典C

C语言发展之初,并没有所谓的C标准。1987,布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)合著的The C Programming Language(C语言程序设计》)1版是公认的C标准
C语言比其他语言更依赖库,因此需要一个标准库。实际上,由于缺乏官方标准,UNIX实现提供的库已成为了标准库

 

  1. C89C90 >>
    C89C90

因为ANSI1989年批准该标准 因为ISO1990年批准该标准
美国国家标准协会(ANSI)制定

 

a)        保持 C的精神 >>
保持 C的精神

信任程序员;  不要妨碍程序员做需要做的事;  保持语言精练简单;  只提供一种方法执行一项操作;  让程序运行更快,即使不能保证其可移植性。
在最后一点上,标准委员会的用意是:作为实现,应该针对目标计算机来定义最合适的某特定操作,而不是强加一个抽象、统一的定义

 

  1. C99标准 >>
    C99标准

1994,ANSI/ISO联合委员会(C9X委员会)开始修订C标准
遵循了最初C90标准的原则
委员会的用意不是在C语言中添加新特性,而是为了达到新的目标

 

a)        1个目标是,支持国际化编程。例如,提供多种方法处理国际字符集。  2 个目标是,“调整现有实践致力于解决明显的缺陷。因此,在遇到需要将C 移至64位处理器时,委员会根据现实生活中处理问题的经验来添加标准。  3个目标是,为适应科学和工程项目中的关键数值计算,提高C的适应性, CFORTRAN更有竞争力 >>

 

b)        其他方面改变则更为保守 >>
其他方面改变则更为保守

尽量与C90C++兼容,让语言在概念上保持简单
但并非所有的编译器都完全实现C99的所有改动。因此,你可能发现C99的一些改动在自己的系统中不可用,或者只有改变编译器的设置才可用。

 

  1. C11标准 >>
    C11标准

 

a)        修订标准的原因不是因为原标准不能用,而是需要跟进新的技术 >>

 

  1. Microsoft Visual StudioC标准 >>
    Windows软件开发中,Microsoft Visual Studio及其免费版本Microsoft Visual Studio Express都久负盛名,它们与C标准的关系也很重要。然而,微软鼓励程序员从C转向C++C#。虽然Visual Studio支持C89/90,但是到目前为止,它只选择性地支持那些在C++新特性中能找到的C标准(,long long类型)。而且,2012版本起,Visual Studio不再把C作为项目类型的选项。

 

  1. C编译步骤 >>

典型的C实现通过编译和链接两个步骤来完成这一过程。 编译器把源代码转换成中间代码,链接器把中间代码和其他代码合并,生成可执行文件
1定义程序的目标 2.设计程序 3.编写代码 4编译�5运行程序 6测试和调试程序 7维护和修改程序

 

  1. .c 源代码文件(source code file) >>

 

  1. .obj 把源代码转换为机器语言代码,并把结果放在目标代码文件(或简称目标文件) >>

目标代码文件缺失启动代码(startup code)。启动代码充当着程序和操作系统之间的接口
目标代码还缺少库函数

 

  1. .exe or .out  链接器的作用是,把你编写的目标代码、系统的标准启动代码和库代码这 3 部分合并成一个文件,即可执行文件 >>

 

  1.  >>

 

  1. cc -v 显示你所使用的编译器及其版本。 gccclang命令都可以根据不同的版本选择运行时选项来调用不同C标准。 gcc -std=c99 inform.c[3]  gcc -std=c1x inform.c  gcc -std=c11 inform.c >>

 

a)        1行调用C99标准,2行调用GCC接受C11之前的草案标准,3行调用GCC接受的C11标准版本。Clang编译器在这一点上用法与GCC相同。 >>

 

b)        CygwinMinGW >>

Cygwin在自己的视窗运行,模仿Linux命令行环境
MinGWWindows的命令提示模式中运行

 

  1. 不是那么重要的常识 >>

 

  1. C是可移植的语言 >>
    C是可移植的语言

程序中针对特殊硬件设备(,显示监视器)或操作系统特殊功能(,Windows 8OS X)编写的部分,通常是不可移植的

 

  1. [1].国际C语言混乱代码大赛(IOCCC,The International Obfuscated C Code Contest)。这是一项国际编程赛事,1984年开始,每年举办一次(19971999200220032006年除外),目的是写出最有创意且最让人难以理解的C语言代码。 >>

hello

 

  1. GNU项目始于1987,是一个开发大量免费UNIX软件的集合(GNU的意思是“GNU’s Not UNIX”,GNU不是UNIX)GNU编译器集合(也被称为GCC,其中包含GCC C编译器)是该项目的产品之一。GCC在一个指导委员会的带领下,持续不断地开发,它的C编译器紧跟C标准的改动。GCC有各种版本以适应不同的硬件平台和操作系统,包括UNIXLinuxWindows。用gcc命令便可调用GCC C编译器。许多使用gcc的系统都用cc作为gcc的别名。 >>

 

a)        LL VM项目成为cc的另一个替代品。该项目是与编译器相关的开源软件集合,始于伊利诺伊大学的2000份研究项目。它的 Clang编译器处理 C代码,可以通过 clang调用。有多种版本供不同的平台使用,包括Linux2012 ,Clang成为FreeBSD的默认C编译器。Clang也对最新的C标准支持得很好。 >>

 

  1. 假设该程序中未使用机器特定的编程技术,那么它的运行情况在任何实现中都应该相同。 >>