chore: add 3.4.6.2
chore: add 3.4.6.3
chore: add 3.4.6.4
chore: add 3.4.6.5
chore: add 3.4.6.6
chore: add 3.4.6.7
chore: add 3.4.6.8
chore: add 3.4.6.9
chore: add 3.4.6.10
docs: add 3.6.5.1
This commit is contained in:
FallenYing
2023-07-27 23:15:47 +08:00
parent b9449a0d88
commit b043fd1d05
14 changed files with 535 additions and 89 deletions

View File

@@ -1,10 +1,10 @@
# 9.练习:生成代码
# 9.练习生成代码
*到目前为止我们的冒险游戏有10个对象。每个对象由有5 个属性组成。一个真正的文本冒险可能有数百个甚至数千个对象,并且每个对象的属性数量也可能增加(请参阅下一章)。在目前的形式下,维护如此庞大的对象和属性列表将很困难。*
*到目前为止,我们的冒险游戏有 10 个对象。每个对象由有 5 个属性组成。一个真正的文本冒险可能有数百个甚至数千个对象,并且每个对象的属性数量也可能增加(请参阅下一章)。在目前的形式下,维护如此庞大的对象和属性列表将很困难。*
例如,当我们在添加对象 *wallField**wallCave* 时,我们必须在三个不同的位置执行此操作:一次在 *object.h* 中(作为*#define*),两次在 *object.c* 中(数组 *objs* 中的一个元素,以及一个单独的标签数组)。这显然十分笨拙并且容易出错。
例如,当我们在添加对象 *wallField**wallCave* 时,我们必须在三个不同的位置执行此操作:一次在 *object.h* 中(作为<em>#define</em>),两次在 *object.c* 中(数组 *objs* 中的一个元素,以及一个单独的标签数组)。这显然十分笨拙并且容易出错。
我们将不再手工维护object. hobject. c而是从更适合我们需要的单一源开始生成文件。这个新的源文件可以用你喜欢的任何语言( 典型的是某些特定领域的语言 )只要你有工具把它转换回C。下面是一个简单的例子考虑下列布局来组织我们的对象
我们将不再手工维护 object. hobject. c而是从更适合我们需要的单一源开始生成文件。这个新的源文件可以用你喜欢的任何语言 ( 典型的是某些特定领域的语言 ),只要你有工具把它转换回 C。下面是一个简单的例子考虑下列布局来组织我们的对象
```txt
/* Raw C code (declarations) */
@@ -21,7 +21,7 @@
根据到目前为止收集的对象,我们可以构造以下源文件。文件名并不重要;我只是简单地将其命名为*object.txt*,以明确它与*object.h*和*object.c*相关。
# object.txt
## object.txt
```txt
#include <stdio.h>
@@ -87,4 +87,5 @@ extern OBJECT objs[];
location cave
```
思考题:你能否自己用C来实现这段伪代码?
::: warning 🤔 思考题:你能否自己用 C 来实现这段伪代码?
:::