4

NetHackのソースコード(Cで書かれている)には、私が理解できないことがいくつかあります。

次のコードは、Nethack3.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」とは何か、またそれらの意味を教えてください。

4

2 に答える 2

2

少しチェックしました...NEARDATAで定義されconfig1.hており、AmigaOSプラットフォームでのみ使用されます。この場合、データセグメント(グローバル変数と静的変数が格納されている場所)は、CPUレジスタを基準にしてコンパイラによって参照されることを意味します。

STATIC_*定義もプラットフォームに依存しているようです。

したがって、これはすべてプラットフォーム固有のものであり、プリプロセッサ#define構造を使用して定義され、ソースが異なるプラットフォーム上に構築されることを確認します。

于 2011-11-19T01:39:12.527 に答える
0

これらはプリプロセッサマクロであり、これらのファイルの先頭に含まれているhack.hで定義されています。

于 2011-11-19T01:35:56.140 に答える