2012-04-13 5 views
0

ich diesen bestimmten Code-Schnipsel las: -WxWidgets in C++ auf Windows

class WXDLLIMPEXP_CORE wxCommandEvent : public wxEvent, public wxEventBasicPayloadMixin 

dies in event.h Header-Datei definiert ist, verstehe ich nicht "WXDLLIMPEXP_CORE".

Dank

+0

wxWidgets verwendet viele Makros wie diese. Sie können möglicherweise mehr wissen, indem Sie überprüfen, wo das Makro definiert ist. –

Antwort

2

Wenn wir einen Blick auf where it is defined haben wir

#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 

Die Kommentare an anderer Stelle in der Datei sehen sind ziemlich erklärend, was passiert ist, aber eine kurze Zusammenfassung ist, dass gibt es drei Fälle Wir machen eine DLL, benutzen eine DLL oder benutzen überhaupt keine. Der letzte Fall ist der einfachste, wenn wir überhaupt keine DLLs verwenden, dann sind sie zu nichts definiert. Wenn wir eine DLL erstellen, markiert sie die Klasse als exportiert, und wenn wir eine DLL verwenden, markiert sie die Klasse als importiert.

+0

Ich habe einen Teil davon, in diesem ich betrachte die Klasse als exportierte (wxCommandEvent), daWXDLLIMPEXP_CORE keine Verwendung von Dll macht, wie würde das wichtig, wenn eine Klasse exportiert oder importiert wird abhängig davon, ob die DLLs zum Erstellen verwendet werden DLLs –