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”,以及它们的含义?

最佳答案

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

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

关于c - "NEARDATA"在 NetHack 源代码中是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8191137/

10-11 21:37