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”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 MinGW 编译先前修改的 Nethack - 缓存问题?