_ATL_ENABLE_PTM_WARNING
定義這個巨集為了強制使用指標的 ANSI C++ 標準相容的語法至成員函式。使用這個巨集,而非標準語法是用來初始化成員指標函式,會導致 C4867 編譯器會產生錯誤。
#define _ATL_ENABLE_PTM_WARNING
備註
變更 ATL 和 MFC 程式庫與 Visual C++ 編譯器的增強標準 C++ 標準。依據 ANSI C++ 標準,指標的語法與類別成員函式的應該是 _&CMyClass::MyFunc。
當 _ATL_ENABLE_PTM_WARNING 未定義預設值 (執行個體), ATL/MFC 停用在巨集對應 (特別是訊息對應 (Message Map) 的 C4867 錯誤,因此在舊版中建立的程式碼可能會繼續建置一樣。如果您定義 _ATL_ENABLE_PTM_WARNING,您的程式碼應該符合 C++ 標準。
然而,非標準的格式已經被取代,因此,您需要將現有程式碼移至符合 C++ 標準的語法。例如,下列項目:
BEGIN_MESSAGE_MAP(CMFCListViewDoc, CDocument)
ON_COMMAND(ID_MYCOMMAND, OnMycommand)
END_MESSAGE_MAP()
應該會變更為:
BEGIN_MESSAGE_MAP(CMFCListViewDoc, CDocument)
ON_COMMAND(ID_MYCOMMAND, &CMFCListViewDoc::OnMycommand)
END_MESSAGE_MAP()
請注意,將「_& 字元的對應巨集,您不能再次將它用於您的程式碼。