Что означает «NEARDATA» в исходном коде NetHack? - PullRequest
4 голосов
/ 19 ноября 2011

В исходном коде NetHack (написанном на C) есть некоторые вещи, которые я не понимаю.

Следующий код можно найти в исходном коде Nethack 3.4.3:

STATIC_VAR NEARDATA struct engr *head_engr;

(в строке 9 engrave.c в http://nethackwiki.com/wiki/engrave.c#line9)

STATIC_PTR int NDECL(doprev_message);

(в строке 106 cmd.c в http://nethackwiki.com/wiki/cmd.c#line106)

STATIC_DCL char *NDECL(parse);

(в строке 157 cmd.c)

Может кто-нибудь объяснить мне, что такое "NEARDATA", "STATIC_VAR", "STATIC_PTR" и "STATIC_DCL", а также что они означают?

Ответы [ 2 ]

2 голосов
/ 19 ноября 2011

Я немного проверил ... NEARDATA определен в config1.h и используется только на платформе AmigaOS.В этом случае это означает, что на сегмент данных (где хранятся глобальные и статические переменные) компилятор ссылается относительно регистра ЦП.

Определения STATIC_* также, похоже, зависят от платформы.

Таким образом, все это зависит от платформы, определяемой с помощью конструкции препроцессора #define, чтобы убедиться, что источник построен на разных платформах.

0 голосов
/ 19 ноября 2011

Это макросы препроцессора , и они определены в hack.h , который находится вверху этих файлов.

...