Compartir a través de


_ATL_ENABLE_PTM_WARNING

Defina este macro para forzar el uso de la sintaxis de norma- bajo de ANSI C++ para el puntero a las funciones miembro. Utilizando esta macro producirá un error del compilador C4867 que se generará cuando la sintaxis no estándar se utiliza para inicializar un puntero a una función miembro.

#define _ATL_ENABLE_PTM_WARNING

Comentarios

Las bibliotecas de ATL y MFC se han cambiado para coincidir con la conformidad estándar mejorado de C++ del compilador de Visual C++. Según el estándar ANSI C++, la sintaxis de un puntero a una función miembro de clase debe ser &CMyClass::MyFunc.

Cuando _ATL_ENABLE_PTM_WARNING no está definido (el caso predeterminado), y MFC deshabilita el error C4867 en mapas macros (notablemente mapas de mensajes) para que el código creado en versiones anteriores puede continuar compilando como antes. Si define _ATL_ENABLE_PTM_WARNING, el código debe ser compatible del estándar de C++.

Sin embargo, está desusado el formulario no estándar, por lo que es necesario mover la existencia codificada C++ a estándar sintaxis compatible. Por ejemplo, el siguiente:

BEGIN_MESSAGE_MAP(CMFCListViewDoc, CDocument)
   ON_COMMAND(ID_MYCOMMAND, OnMycommand)
END_MESSAGE_MAP()

Debe cambiar:

BEGIN_MESSAGE_MAP(CMFCListViewDoc, CDocument)
   ON_COMMAND(ID_MYCOMMAND, &CMFCListViewDoc::OnMycommand)
END_MESSAGE_MAP()

Observe que para las macros de mapa que agregan “y” el carácter, no debe agregarlo de nuevo en el código.

Vea también

Referencia

Advertencia del compilador C4867

Otros recursos

Compiler Options Macros