NetHack 源代码中的“NEARDATA”是啥意思?

Posted

技术标签:

【中文标题】NetHack 源代码中的“NEARDATA”是啥意思?【英文标题】:What does "NEARDATA" mean in the NetHack source code?NetHack 源代码中的“NEARDATA”是什么意思? 【发布时间】:2012-01-01 17:33:27 【问题描述】:

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

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

STATIC_VAR NEARDATA struct engr *head_engr;

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

STATIC_PTR int NDECL(doprev_message);

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

STATIC_DCL char *NDECL(parse);

(在 cmd.c 的第 157 行)

谁能解释一下“NEARDATA”、“STATIC_VAR”、“STATIC_PTR”和“STATIC_DCL”是什么,以及它们的含义?

【问题讨论】:

看起来像#define'd 的东西。你找过它们的定义吗? 【参考方案1】:

它们是pre-processor 宏,在hack.h 中定义,包含在这些文件的顶部。

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于NetHack 源代码中的“NEARDATA”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

Nethack 源代码在哪里[关闭]

NetHack 走廊实施

如何在 Windows 7 中编译 NetHack?

无法使用 MinGW 编译先前修改的 Nethack - 缓存问题?

如何让 Python (2.7.x) 程序输出类似 nethack 的 ASCII 图形?

Linux中的一些小游戏