#if defined __DRAW_IMPL__
? ? #if?(defined?_AFXDLL?&&?!defined?__STAT_WITH_DLLMFC__)
? ? ? ? ?#define?__DRAW_API?_declspec(dllexport)
? ? #else
? ? ? ? ?#define?__DRAW_API
? ? #endif?//?_AFXDLL
#else
? ? ?#if?(defined?_AFXDLL?&&?!defined?__STAT_WITH_DLLMFC__)
? ? ? ? ? ?#define?__DRAW_API?_declspec(dllimport)
? ? ?#else
? ? ? ? ? ?#define?__DRAW_API
? ? ? #endif?//?_AFXDLL
? #pragma?message("??????(Professional?User?Interface?Suite)")
? #pragma?comment(?lib,?__DRAW_LIB_NAME?)
#endif
一般在編寫動態鏈接庫里的類時,經常會定義象上面的宏,主要是為了使用方便,這樣在編寫庫時,只要定義了__DRAW_IMPL__宏,所有動態庫中的類都會自動導出,
例如:class?__DRAW_API?A{};編譯時會被展開成calss?_declspec(dllexport)?A{};
而在用戶使用時,因為沒有定義__DRAW_IMPL__宏,所有的類自動加上dllimport成為導入類,成為class?_declspec(import).
如果靜態鏈接時或者直接使用時,只要定義了__STAT_WITH_DLLMFC__宏,相當于直接定義類,__DRAW_API被展開成空串.