本篇之前的内容都是基础中的基础,理论上只需前面所说的内容即可编写出几乎任何只操作内存的程序,也就是本篇以后说明的内容都可以使用之前的内容自己实现,只不过相对要麻烦与复杂许多罢了. 本篇开始要比较深入地讨论c++提出的很有意义的功能,它们大多数与前面的switch语句一样,是一种技术的实现,但更为重要的是提供了语义的概念.所以,本篇开始将主要从它们提供的语义这方面来说明各自的用途,而不像之前通过实现原理来说明(不过还是会说明一下实现原理的).为了能清楚说明这些功能,要求读者现在至少能使用vc来编译并生成一段程序,因为后续的许多例子都最好是能实际编译并观察执行结果以加深理解(尤其是声明与类型这两个概念).为此,如果你现在还不会使用vc或其他编译器来进行编译代码,请先参看其他资料以了解如何使用vc进行编译.为了后续例子的说明,下面先说明一些预备知识. 【程序编程相关:用API播放音频及视频文件】
——何谓函数 【推荐阅读:工作流引擎的三种定位】写出了c++代码,要如何让编译器编译?在文本文件中书写c++代码,然后将文本文件的文件名作为编译器的输入参数传递给编译器,即叫编译器编译给定文件名所对应的文件.在vc中,这些由vc这个编程环境(也就是一个软件,提供诸多方便软件开发的功能)帮我们做了,其通过项目(project)来统一管理书写有c/c++代码的源文件.为了让vc能了解到哪些文件是源文件(因为还可能有资源文件等其他类型文件),在用文本编辑器书写了c++代码后,将其保存为扩展名为.c或.cpp(c plus plus)的文本文件,前者表示是c代码,而后者表示c++代码,则缺省情况下,vc就能根据不同的源文件而使用不同的编译语法来编译源文件. 前篇说过,c++中的每条语句都是从上朝下执行,每条语句都对应着一个地址,那么在源文件中的第一条语句对应的地址就是0吗?当然不是,与在栈上分配内存一样,只能得到相对偏移值,实际的物理地址由于不同的操作系统将会有各自不同的处理,如在windows下,代码甚至可以没有物理地址,且代码对应的物理地址还能随时变化. 当要编写一个稍微正常点的程序时,就会发现一个源文件一般是不够的,需要使用多个源文件来写代码.而各源文件之间要如何连接起来?对此c++规定,凡是生成代码的语句都要放在函数中,而不能直接写在文本文件中.关于函数后面马上说明,现在只需知道函数相当于一个外壳,它通过一对“{}”将代码括起来,进而就将代码分成了一段一段,且每一段代码都由函数名这个项目内唯一的标识符来标识,因此要连接各段代码,只用通过函数名即可,后面说明.前面说的“生成代码”指的是表达式语句与指令语句,虽然定义语句也可能生成代码,但由于其代码生成的特殊性,是可以直接写在源文件内(在«c++从零开始(十)»中说明),即不用被一对“{}”括起来. 程序一开始要从哪里执行?c++强行规定,应该在源文件中定义一个名为main的函数,而代码就从这个函数处开始运行.应该注意由于c++是由编译器实现的,而它的这个规定非常的牵强,因此纵多的编译器都又自行提供了另外的程序入口点定义语法(程序入口点即最开始执行的函数),如vc,为了编写dll文件,就不应有main函数;为了编写基于win32的程序,就应该使用winmain而不是main;而vc实际提供了更加灵活的手段,实际可以让程序从任何一个函数开始执行,而不一定非得是前面的winmain.main等,这在«c++从零开始(十九)»中说明. 对于后面的说明,应知道程序从main函数开始运行,如下: long a; void main(){ short b; b++; } long c; 上面实际先执行的是long a;与long c;,不过不用在意,实际有意义的语句是从short b;开始的. 【扩展信息:如何提取所有 MS Office 200】
预备知识
... 下一页