4

NetHack 源代码(用 C 编写)有一些我不明白的地方。

在 Nethack 3.4.3 源代码中可以找到以下代码:

STATIC_VAR NEARDATA struct engr *head_engr;

(在http://nethackwiki.com/wiki/engrave.c#line9的 engrave.c 的第 9 行)

STATIC_PTR int NDECL(doprev_message);

(在http://nethackwiki.com/wiki/cmd.c#line106的 cmd.c 的第 106 行)

STATIC_DCL char *NDECL(parse);

(在 cmd.c 的第 157 行)

有人可以向我解释一下“NEARDATA”、“STATIC_VAR”、“STATIC_PTR”和“STATIC_DCL”是什么,以及它们的含义吗?

4

2 回答 2

2

我做了一点检查...NEARDATA定义在 中config1.h,并且仅在 AmigaOS 平台上使用。在这种情况下,这意味着编译器相对于 CPU 寄存器引用数据段(存储全局和静态变量的地方)。

STATIC_*定义似乎也依赖于平台。

所以这是所有特定于平台的东西,使用预处理器#define构造定义,以确保源构建在不同的平台上。

于 2011-11-19T01:39:12.527 回答
0

它们是预处理器宏,并在包含在这些文件顶部的hack.h中定义。

于 2011-11-19T01:35:56.140 回答