【问题标题】: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 的东西。你找过它们的定义吗?

标签: c nethack


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-06-06
      • 1970-01-01
      • 2015-05-09
      • 1970-01-01
      • 1970-01-01
      • 2018-08-26
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      相关资源
      最近更新 更多