_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禁用了宏映射(特别是消息映射)的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()

注意对于添加“&”字符的映射宏,则不应再次添加到您的代码。

请参见

参考

编译器警告 C4867

其他资源

编译器选项宏