3

Linderdaum Engine を使用しようとしていますが、次のような多くの奇妙な宣言が見つかりました。

class scriptfinal netexportable ClassName: public iObject

これらの奇妙な名前scriptfinalnetexportableはマクロです。しかし、それらは空であると定義されています。なぜ誰かがこの種の定義を必要とするのでしょうか?

4

2 に答える 2

3

それらは空なので、C++コンパイラはそれらを気にしません。

Linderdaum Engineは、クラスに関するメタ情報を生成するために、C++ソースを前処理します。

これらのマクロは、スクリプト言語(scriptfinal)および.NETシリアル化コード(netexportable)の情報を生成するためにプリプロセッサによって使用される可能性があります。

于 2012-07-24T09:46:37.453 に答える
2

たとえば、誰かが scriptfinal マクロを次のように設定する可能性があります。

#define scriptfinal __declspec(dllimport)

取得するため:

class __declspec(dllimport) ClassName: public iObject {};

__declspec は Microsoft 固有の拡張であるため、通常は移植可能なコードのマクロ展開で使用されます。Linux 環境用にコンパイルする場合、マクロは空であるため__declspecコンパイラには表示されず、Windows では上記のように定義されます。

于 2012-07-24T08:04:46.910 に答える