私はこの特定のコードスニペットを読んでいました:-
class WXDLLIMPEXP_CORE wxCommandEvent : public wxEvent, public wxEventBasicPayloadMixin
これはevent.hヘッダーファイルで定義されています、私は「WXDLLIMPEXP_CORE」を理解していませんでした。
ありがとう
私はこの特定のコードスニペットを読んでいました:-
class WXDLLIMPEXP_CORE wxCommandEvent : public wxEvent, public wxEventBasicPayloadMixin
これはevent.hヘッダーファイルで定義されています、私は「WXDLLIMPEXP_CORE」を理解していませんでした。
ありがとう
定義されている場所を見ると、
#ifdef WXMAKINGDLL_CORE
# define WXDLLIMPEXP_CORE WXEXPORT
# define WXDLLIMPEXP_DATA_CORE(type) WXEXPORT type
# if defined(HAVE_VISIBILITY)
# define WXDLLIMPEXP_INLINE_CORE WXEXPORT
# else
# define WXDLLIMPEXP_INLINE_CORE
# endif
#elif defined(WXUSINGDLL)
# define WXDLLIMPEXP_CORE WXIMPORT
# define WXDLLIMPEXP_DATA_CORE(type) WXIMPORT type
# if defined(HAVE_VISIBILITY)
# define WXDLLIMPEXP_INLINE_CORE WXIMPORT
# else
# define WXDLLIMPEXP_INLINE_CORE
# endif
#else /* not making nor using DLL */
# define WXDLLIMPEXP_CORE
# define WXDLLIMPEXP_DATA_CORE(type) type
# define WXDLLIMPEXP_INLINE_CORE
#endif
ファイルの他の場所にあるコメントは、何が起こっているかについてかなり説明していますが、簡単にまとめると、DLL を作成している、DLL を使用している、またはまったく使用していないという 3 つのケースがあるということです。最後のケースは最も単純で、DLL をまったく使用していない場合、DLL は何も定義されていません。DLL を作成している場合はクラスがエクスポート済みとしてマークされ、DLL を使用している場合はクラスがインポート済みとしてマークされます。