0

dll を明示的に読み取る C++ コードを理解しようとしています。#define LFE_API(name) LFE_##name name以下の行が実際にどのように機能するか知っている人はいますか? 理解は#define LFE_API(name) LFE_##nameしていますが、最後の「名前」について混乱しています。

    struct Interface
{
    #   ifdef LFE_API
    #       error You can't define LFE_API before. 
    #   else
    #       define LFE_API(name) LFE_##name name
                LFE_API(Init);
                LFE_API(Close);
                LFE_API(GetProperty);
    #       undef LFE_API
    #   endif
};
4

2 に答える 2

1
LFE_Init Init;

コードで g++ -E を実行して、何が生成されるかを確認します。構造要素には型と名前が必要です。

于 2010-08-18T21:49:49.187 に答える
1

マクロの最初の部分 (LFE_##name) は両方の部分を連結しているだけなので、LFE_API を呼び出すと、次のような LFE##name 型の name という名前の変数が作成されます。

LFE_API(Init) は LFE_Init Init に展開されます。

于 2010-08-18T21:47:13.873 に答える