我正在阅读这个特定的代码片段:-
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 或根本不使用一个。最后一种情况是最简单的,如果我们根本不使用 DLL,那么它们就被定义为一无所有。如果我们正在创建一个 DLL,那么它会将类标记为导出,如果我们正在使用 DLL,那么它将将该类标记为导入。