Partilhar via


_ATL_ENABLE_PTM_WARNING

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

#define _ATL_ENABLE_PTM_WARNING

Comentários

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

Quando _ATL_ENABLE_PTM_WARNING não está definido (caso padrão), ATL/MFC desabilita o erro C4867 na macro mapeado (notavelmente mapas de mensagem) para permitir que código herdado continuar criando sistema autônomo antes. Se você definir _ATL_ENABLE_PTM_WARNING, seu código deve ser padrão C++ em conformidade.

No entanto, o formulário não-padrão foi substituído, portanto, você precisará mover o código existente para sintaxe compatível com o padrão C++.Por exemplo, o seguinte:

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

Deve ser alterado para:

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

Observe que para macros de MAP de adicionar o caractere '&', você deve não adicioná-lo novamente no seu código.

Consulte também

Referência

C4867 de aviso do compilador

Outros recursos

Macros de opções do compilador