Compartilhar via


_ATL_ENABLE_PTM_WARNING

Defina este macro para forçar o uso da sintaxe compatível com o padrão ANSI C++ para o ponteiro funções de membro.Usar este macro fará com que o erro do compilador C4867 a ser gerado quando a sintaxe não padronizada é usada para inicializar um ponteiro para uma função de membro.

#define _ATL_ENABLE_PTM_WARNING

Comentários

As bibliotecas de ATL e de MFC foram alteradas para corresponder ao padrão aprimorada de C++ o compilador Visual C++.De acordo com o padrão ANSI C++, a sintaxe de um ponteiro para uma função de membro da classe deve ser &CMyClass::MyFunc.

Quando _ATL_ENABLE_PTM_WARNING não está definido (os casos padrão), ATL/MFC desativa o erro C4867 em mapas macro (em especial mapas de mensagem) para que o código que foi criado em versões anteriores pode continuar a compilação como antes.Se você definir _ATL_ENABLE_PTM_WARNING, seu código deve ser compatível padrão C++.

Em o entanto, o formulário diferente do padrão foi substituído, portanto você precisa mover o código existente a sintaxe compatível padrão C++.Por exemplo, o seguinte:

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

Deve ser modificado:

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

Observe que para as macros de mapa que adicionam o caractere “&”, você não deve adicioná-lo novamente em seu código.

Consulte também

Referência

C4867 de aviso do compilador

Outros recursos

Macros as opções do compilador