c语言第二课:
八进制 0 0370
十六进制 0x (不区分大小写) 0xe3d
ASCII码:
ASCII码规定了128个英文字符与二进制的对应关系,占用一个字节(实际上只占用了一个字节的后面7位,最前面1位统一规定为0)
Unicode:
Unicode 是一个很大的集合,现在的规模可以容纳100多万个符号,每个符号的对应的二进制都不一样。Unicode 规定可以使用多个字节表示一个字符,例如 a 的编码为 01100001,一个字节就够了,”好“的编码为 01011001 01111101,需要两个字节。
为了兼容ASCII,Unicode 规定前0~127个字符与ASCII是一样的,不一样的只是128~255的这一段。
编译:
将源文件生成目标文件。
链接:
将目标文件和系统库组合一起并转换成可执行文件。
vc++6.0的工程目录结构说明:
1) .dsp文件:DeveloperStudio Project,工程文件(文本格式),用来保存当前工程的信息,例如编译参数、包含的源文件等,不建议手动编辑。当需要打开一个工程时,打开该文件即可。
2) .dsw文件:DeveloperStudio Workspace,工作区文件,和DSP类似。
3).opt文件:IDE的Option文件,保存了与当前工程有关的开发环境的配置,例如工具条位置、打开的文件、光标位置等。
4) .plg文件:日志文件(HTML文件),保存了程序的编译信息,例如错误和警告等。
一个工程可以包含多个源文件和资源文件(图片、视频等),但只能生成一个二进制文件,例如可执行程序.exe、动态链接库.dll、静态链接库.lib等。工程类型决定了不同的配置信息,也决定了生成不同的二进制文件。
注意:编译生成的 .exe 文件在工程目录下的Debug文件夹内。在Debug目录中还会看到一个名为 hello.obj 的文件。.obj是VC/VS生成的目标文件,类似于C-Free下的.o文件。
vs:
在VS中创建项目会默认创建解决方案。VS中的“解决方案”和VC6.0中的“工作区”是一个概念,解决方案可以包含多个项目,并能够批量生成。
一个工作区可以包含多个工程,能够批量生成多个二进制文件。
分步编译:
1) 预处理
gcc -E test.c -o test.i
在当前目录下会多出一个预处理结果文件 test.i,打开 test.i 可以看到,在 test.c 的基础上把stdio.h和stdlib.h的内容插进去了。
2) 编译为汇编代码
gcc -S test.i -o test.s
其中-S参数是在编译完成后退出,-o为指定文件名。
3) 汇编为目标文件
gcc -c test.s -o test.o
.o就是目标文件。目标文件与可执行文件类似,都是机器能够识别的可执行代码,但是由于还没有链接,结构会稍有不同。
4) 链接并生成可执行文件
gcc test.o -o test
如果有多个源文件,可以这样来编译:
gcc -c test1.c -o test1.o
gcc -c test2.c -o test2.o
gcc test1.o test2.o -o test
注意:如果不指定文件名,GCC会生成名为a.out的文件,.out文件只是为了区分编译后的文件,Linux下并没有标准的可执行文件后缀名,一般可执行文件都没有后缀名。
编译后生成的test文件就是程序了,运行它:
./test
如果没有运行权限,可以使用sudo命令来增加权限(注意要在Linux的分区下):
sudo cdmod test 777
对于程序的检错,我们可以用-pedantic、-Wall、-Werror选项:
-pedantic选项能够帮助程序员发现一些不符合 ANSI/ISO C标准的代码(并不是全部);
-Wall可以让gcc显示警告信息;
-Werror可以让gcc在编译中遇到错误时停止继续。
这3个选项都是非常有用的。