2012-04-13 52 views
0

我讀這個特殊的代碼片段: -wxWidgets的C++中的窗戶

class WXDLLIMPEXP_CORE wxCommandEvent : public wxEvent, public wxEventBasicPayloadMixin 

這是在event.h頭文件中定義的,我不明白「WXDLLIMPEXP_CORE」。

感謝

+0

wxWidgets使用了很多像這樣的宏。您可以通過檢查宏定義的位置來了解更多信息。 – 2012-04-13 06:46:05

回答

2

如果我們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,那麼它將該類標記爲導入。

+0

我得到了它的一部分,在這個我認爲該類作爲要導出(wxCommandEvent),因爲WXDLLIMPEXP_CORE不使用任何使用Dll如果一個類的導出或導入,這取決於如果DLL用於創建DLL的 – 2012-04-13 07:20:52