我讀這個特殊的代碼片段: -wxWidgets的C++中的窗戶
class WXDLLIMPEXP_CORE wxCommandEvent : public wxEvent, public wxEventBasicPayloadMixin
這是在event.h頭文件中定義的,我不明白「WXDLLIMPEXP_CORE」。
感謝
我讀這個特殊的代碼片段: -wxWidgets的C++中的窗戶
class WXDLLIMPEXP_CORE wxCommandEvent : public wxEvent, public wxEventBasicPayloadMixin
這是在event.h頭文件中定義的,我不明白「WXDLLIMPEXP_CORE」。
感謝
如果我們where it is defined看看我們看到
#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,那麼它將該類標記爲導入。
我得到了它的一部分,在這個我認爲該類作爲要導出(wxCommandEvent),因爲WXDLLIMPEXP_CORE不使用任何使用Dll如果一個類的導出或導入,這取決於如果DLL用於創建DLL的 – 2012-04-13 07:20:52
wxWidgets使用了很多像這樣的宏。您可以通過檢查宏定義的位置來了解更多信息。 – 2012-04-13 06:46:05