《C++游戏编程入门(第4版)》——1.1 C++简介

简介:

本节书摘来自异步社区出版社《C++游戏编程入门(第4版)》一书中的第1章,第1.1节,作者:【美】Michael Dawson(道森),更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.1 C++简介

C++游戏编程入门(第4版)
全世界数以百万计的程序员都在使用C++。它是编写计算机应用程序的最流行的语言之一,而且是编写大预算计算机游戏的最流行的语言。

Bjarne Stroustrup发明的C++是C语言的直系后代。实际上,C++作为C语言的超集,几乎包含它的所有内容。不仅如此,C++还提供了更好的问题解决方式和一些全新的功能。

1.1.1 使用C++编写游戏

游戏程序员选择C++的原因各种各样,下面列出其中一些:

高速。经过精良编写的C++程序速度明显要快。C++的设计目标之一就是实现高性能。如果您想从程序中获取更多的性能提升,可以在C++中使用汇编语言(一种最底层的、人类可读的编程语言)来与计算机硬件直接通信。
灵活。C++是一种支持包括面向对象编程在内的不同编程方式的多范型语言。与其他一些现代语言不同,C++并不会强制程序员使用某一特定编程方式。
良好的支持。源于C++在游戏行业的悠久历史,现在有大量资源库可供C++游戏程序员使用。这些资源包括图形API、2D、3D、物理以及声音引擎。为了尽可能加快游戏开发的进度,C++程序员可以使用所有这些已有的代码。
..15-0379图片15-0379图片0101.tif

图1.1 从C++源代码生成可执行文件

1.1.2 生成可执行文件

不管某个程序是游戏还是商业应用程序,启动该程序所运行的文件即为可执行文件。从C++源代码(C++语言指令的集合)生成可执行文件包含以下几个步骤。生成过程如图1.1所示。

(1)首先,程序员使用编辑器编写C++源代码,通常为以.cpp为扩展名的文件。编辑器就好比程序员的字处理器,它能帮助程序员创建、编辑以及保存源代码。

(2)程序员保存好源文件后,调用C++编译器—— 一种读取源代码并将其翻译成目标文件的应用程序。目标文件的扩展名通常为.obj。

(3)接下来,链接器将目标文件链接到任何必要的外部文件,然后生成可执行文件。其扩展名通常为.exe。至此,用户(或玩家)就可以通过启动可执行文件来运行该程序了。

为了让该过程自动化,程序员通常会使用综合性的开发工具——集成开发环境(Integrated Development Environment,IDE)。一个典型的IDE集合了编辑器、编译器、链接器以及其他工具。Microsoft的Visual Studio Express 2013 for Windows Desktop是Windows下一款比较流行(且免费)的IDE。在www.visualstudio.com/down loads/download-visual-studio-vs上可以找到关于此IDE的更多信息(且能下载到一份副本)。

提示
 以上描述的过程只是一种很简单的情况说明。用C++编写复杂的应用程序时,通常一个程序员(甚至是一个程序员团队)会编写多个源代码文件。

1.1.3 错误处理

在描述从C++源代码生成可执行文件的过程时,我们忽略了一个小细节——可能出现的错误。如果人类生来就要犯错,那么程序员是人类中犯错最多的。即使是最优秀的程序员编写的代码在第一次(或者以后的好几次)生成可执行文件的过程中都要产生错误。程序员必须修正所有的错误,然后重新执行整个生成过程。下面是使用C++编程会遇到的一些基本类型的错误:

编译错误。这类错误发生在代码编译阶段,后果是无法生成目标文件。这种错误可能是语法错误,意思是编译器无法理解某些代码。语法错误经常是由像输入错误这样的简单错误导致的。编译器还能发出警告。尽管通常情况下不必在意警告,但还是应该将它们当作错误来对待,进行修复并重新编译。
链接错误。这类错误发生在链接过程中,并可能提示无法找到程序的某些外部引用。解决办法通常是调整程序中出现问题的引用关系,然后重新编译/链接。
运行时错误。这类错误发生在可执行文件的运行过程中。如果程序执行了某些非法操作,那么有可能突然崩溃。但是有一种更难以捉摸的运行时错误(逻辑错误)能让程序以出人意料的方式运行。如果您曾经玩过某个游戏,里面的某个角色能在空中行走(而这个角色不应该有能力在空中行走),那么所看到的就是一个逻辑错误。
现实世界

游戏公司和其他软件制造商一样努力使自己的产品没有错误。他们最后的防线是质量保证人员(游戏测试员)。游戏测试员以玩游戏为生,但他们的工作不像想象的那样有趣。测试员必须重复地测试游戏的同一部分(也许有几百次),尝试异常情况并且详细记录任何异常。这种工作十分单调,薪酬也不高。但是众所周知,成为测试人员是进入游戏公司的一种极佳方式。

1.1.4 理解ISO标准

C++的ISO标准对C++进行了定义,并准确地描述了其工作方式。它还定义了一组称为标准库的文件,其中包含用于完成一般编程任务(如I/O,即获取输入和显示输出)的程序块。标准库让程序员的工作变得简单,而且还提供了基础性代码以防止程序员重复编写代码。本书中的所有程序都将使用标准库。

提示
  ISO标准经常称为ANSI(美国国家标准协会)标准或ANSI/ISO标准。不同的名称代表了审核与建立该标准的不同委员会的首字母缩写。遵循ISO标准的C++代码最常见的叫法是标准C++。
本书使用了Microsoft的Visual Studio Express 2013 for Windows Desktop来开发程序。它的编译器严格遵循ISO标准,所以其他现代编译器也应该能够编译、链接和运行本书的所有程序。然而,如果您正在使用的是Windows操作系统,推荐使用Visual Studio Express 2013的Windows桌面版。

提示
 附录A中描述了使用Microsoft的Visual Studio Express 2013 for Windows Desktop创建、保存、编译和运行Game Over程序的详细步骤。如果使用其他编译器或者IDE,请查阅其文档。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
26天前
|
存储 C++ 容器
C++入门指南:string类文档详细解析(非常经典,建议收藏)
C++入门指南:string类文档详细解析(非常经典,建议收藏)
33 0
|
26天前
|
编译器 C++
C++入门指南:10分钟带你快速了解模板究竟是什么(建议收藏!!)
C++入门指南:10分钟带你快速了解模板究竟是什么(建议收藏!!)
27 0
|
26天前
|
存储 编译器 C语言
C++入门: 类和对象笔记总结(上)
C++入门: 类和对象笔记总结(上)
32 0
|
28天前
|
编译器 Linux C语言
C++第二弹---C++入门(中)
C++第二弹---C++入门(中)
|
28天前
|
Java 程序员 Maven
【C/C++ CommonAPI入门篇】深入浅出:CommonAPI C++ D-Bus Tools 完全使用教程指南
【C/C++ CommonAPI入门篇】深入浅出:CommonAPI C++ D-Bus Tools 完全使用教程指南
58 0
|
29天前
|
算法 安全 C++
【C++ 泛型编程 入门篇】深入探索C++的numeric_limits:全面理解数值界限(一)
【C++ 泛型编程 入门篇】深入探索C++的numeric_limits:全面理解数值界限
45 0
|
29天前
|
存储 算法 测试技术
【C++ 泛型编程 入门篇】深入探索C++的numeric_limits:全面理解数值界限(二)
【C++ 泛型编程 入门篇】深入探索C++的numeric_limits:全面理解数值界限
32 0
|
1天前
|
C语言 C++
c++的学习之路:4、入门(3)
c++的学习之路:4、入门(3)
10 0
|
7天前
|
C++
【C++成长记】C++入门 | 类和对象(下) |Static成员、 友元
【C++成长记】C++入门 | 类和对象(下) |Static成员、 友元
|
7天前
|
存储 编译器 C++
【C++成长记】C++入门 | 类和对象(中) |拷贝构造函数、赋值运算符重载、const成员函数、 取地址及const取地址操作符重载
【C++成长记】C++入门 | 类和对象(中) |拷贝构造函数、赋值运算符重载、const成员函数、 取地址及const取地址操作符重载

热门文章

最新文章