Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Estes macros controlam funcionalidades específicas do compilador.
| Macro | Description |
|---|---|
_ATL_ALL_WARNINGS |
Um símbolo que permite erros em projetos convertidos a partir de versões anteriores do ATL. |
_ATL_APARTMENT_THREADED |
Defina se um ou mais dos seus objetos usam threading de apartamento. |
_ATL_CSTRING_EXPLICIT_CONSTRUCTORS |
Torna certos CString construtores explícitos, prevenindo conversões não intencionais. |
_ATL_ENABLE_PTM_WARNING |
Defina esta macro para exigir sintaxe padrão C++. Gera o erro do compilador C4867 quando a sintaxe não padrão é usada para inicializar um ponteiro para uma função membro. |
_ATL_FREE_THREADED |
Defina se um ou mais dos seus objetos usam threading livre ou neutro. |
_ATL_MODULES |
Permite compilar projetos ATL com permissivo e usar ATL com módulos C++. |
_ATL_MULTI_THREADED |
Um símbolo que indica que o projeto tem objetos marcados como Ambos, Livres ou Neutros. Deveria ser usado o macro _ATL_FREE_THREADED em vez disso. |
_ATL_NO_AUTOMATIC_NAMESPACE |
Um símbolo que impede o uso padrão do namespace como ATL. |
_ATL_NO_COM_SUPPORT |
Um símbolo que impede que código relacionado com COM seja compilado com o seu projeto. |
ATL_NO_VTABLE |
Um símbolo que impede que o ponteiro vtable seja inicializado no construtor e destruidor da classe. |
ATL_NOINLINE |
Um símbolo que indica uma função não deve estar em linha. |
_ATL_SINGLE_THREADED |
Defina se todos os seus objetos usam o modelo de threading único. |
_ATL_ALL_WARNINGS
Um símbolo que permite erros em projetos convertidos a partir de versões anteriores do ATL.
#define _ATL_ALL_WARNINGS
Observações
Antes do Visual C++ .NET 2002, o ATL desativava muitos avisos e deixava-os desativados para que nunca aparecessem no código do utilizador. Specifically:
A expressão condicional de C4127 é constante
C4786 'identificador' : identificador foi truncado para caracteres de 'número' na informação de depuração
C4201 extensão não padrão usada : struct/union sem nome
C4103 'nome do ficheiro': usado #pragma pack para alterar o alinhamento
C4291 'declaração': não foi encontrado nenhum operador correspondente eliminação; A memória não será libertada se a inicialização lançar uma exceção
C4268 'identificador': dados estáticos/globais 'const' inicializados com construtor padrão gerado pelo compilador preenchem o objeto com zeros
Código C4702 inacessível
Em projetos convertidos a partir de versões anteriores, estes avisos continuam desativados pelos cabeçalhos das bibliotecas.
Para alterar este comportamento, adicione a linha seguinte ao pch.h ficheiro (stdafx.h no Visual Studio 2017 e anteriores) antes de incluir cabeçalhos de bibliotecas.
#define _ATL_ALL_WARNINGS
Se isto #define for adicionado, os cabeçalhos ATL têm o cuidado de preservar o estado destes avisos para que não sejam desativados globalmente (ou, se o utilizador desativar explicitamente avisos individuais, não os ativem).
Os novos projetos têm isto #define definido em pch.h (stdafx.h no Visual Studio 2017 e anteriores) por defeito.
_ATL_APARTMENT_THREADED
Defina se um ou mais dos seus objetos usam threading de apartamento.
_ATL_APARTMENT_THREADED
Observações
Especifica o enfiamento do apartamento. Para outras opções e uma descrição dos modelos de threading disponíveis para um objeto ATL, veja Especificar o Modelo e Opções de Threading do Projeto, ATL Simple Object Wizard.
_ATL_CSTRING_EXPLICIT_CONSTRUCTORS
Torna certos CString construtores explícitos, prevenindo conversões não intencionais.
_ATL_CSTRING_EXPLICIT_CONSTRUCTORS
Observações
Quando este construtor é definido, todos CString os construtores que aceitam um único parâmetro são compilados com a palavra-chave explícita, que impede conversões implícitas de argumentos de entrada. Isto significa, por exemplo, que quando _UNICODE é definido, se tentar usar uma char* cadeia como CString argumento construtor, resulta um erro no compilador. Usa esta macro em situações em que precisas de evitar conversões implícitas entre tipos de string estreitos e largos.
Ao usar a _T macro em todos os argumentos das strings construtoras, pode definir _ATL_CSTRING_EXPLICIT_CONSTRUCTORS e evitar erros de compilação independentemente de estar definida ou não _UNICODE .
_ATL_ENABLE_PTM_WARNING
Defina esta macro para forçar o uso de sintaxe ANSI C++ conforme ao padrão para funções de ponteiro para membros. Usar esta macro provoca o erro do compilador C4867 quando uma sintaxe não padrão é usada para inicializar um ponteiro para uma função membro.
#define _ATL_ENABLE_PTM_WARNING
Observações
As bibliotecas ATL e MFC foram alteradas para corresponder à conformidade melhorada com o padrão C++ do compilador Microsoft C++. De acordo com a norma ANSI C++, a sintaxe de um ponteiro para uma função membro da classe deve ser &CMyClass::MyFunc.
Quando _ATL_ENABLE_PTM_WARNING não está definido (o caso predefinido), o ATL/MFC desativa o erro C4867 nos mapas de macros (nomeadamente mapas de mensagens) para que o código criado em versões anteriores possa continuar a ser construído como antes. Se definires _ATL_ENABLE_PTM_WARNING, o teu código deve estar em conformidade com o padrão C++.
No entanto, o formulário não padrão foi obsoleto. Precisas de mover código existente para sintaxe padrão C++. Por exemplo, o seguinte código:
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()
Para macros do mapa, adiciona o carácter '&' do ampersand. Não deves adicionar a personagem novamente no teu código.
_ATL_FREE_THREADED
Defina se um ou mais dos seus objetos usam threading livre ou neutro.
_ATL_FREE_THREADED
Observações
Especifica rosca livre. A threading livre é equivalente a um modelo de apartamento multithread. Consulte Especificar o Modelo de Threading do Projeto para outras opções de threading, e Options, ATL Simple Object Wizard para uma descrição dos modelos de threading disponíveis para um objeto ATL.
_ATL_MODULES
Permite compilar projetos de ATL com permissive- e usar ATL com módulos em C++.
_ATL_MODULES
_ATL_MULTI_THREADED
Um símbolo que indica o projeto tem objetos marcados como Ambos, Livres ou Neutros.
_ATL_MULTI_THREADED
Observações
Se este símbolo for definido, o ATL puxa código que sincroniza corretamente o acesso a dados globais. O novo código deve usar a macro _ATL_FREE_THREADED equivalente em vez disso.
_ATL_NO_AUTOMATIC_NAMESPACE
Um símbolo que impede o uso padrão do namespace como ATL.
_ATL_NO_AUTOMATIC_NAMESPACE
Observações
Se este símbolo não estiver definido, incluindo atlbase.h o desempenho using namespace ATL por defeito, isso pode levar a conflitos de nomeação. Para evitar isto, defina este símbolo.
_ATL_NO_COM_SUPPORT
Um símbolo que impede que código relacionado com COM seja compilado com o seu projeto.
_ATL_NO_COM_SUPPORT
ATL_NO_VTABLE
Um símbolo que impede que o ponteiro vtable seja inicializado no construtor e destruidor da classe.
ATL_NO_VTABLE
Observações
Se o ponteiro vtable for impedido de ser inicializado no construtor e destruidor da classe, o linker pode eliminar o vtable e todas as funções para as quais aponta. Expande-se para __declspec(novtable).
Example
class ATL_NO_VTABLE CMyClass2 :
ATL_NOINLINE
Um símbolo que indica uma função não deve estar em linha.
ATL_NOINLINE inline
myfunction()
{
...
}
Parâmetros
myfunction
A função que não devia ser inlineada.
Observações
Usa este símbolo se quiseres garantir que uma função não é inlineada pelo compilador, mesmo que tenha de ser declarada como inline para poder ser colocada num ficheiro de cabeçalho. Expande-se para __declspec(noinline).
_ATL_SINGLE_THREADED
Defina se todos os seus objetos usam o modelo de threading único
_ATL_SINGLE_THREADED
Observações
Especifica que o objeto é sempre executado no thread principal COM. Consulte Especificar o Modelo de Threading do Projeto para outras opções de threading, e Options, ATL Simple Object Wizard para uma descrição dos modelos de threading disponíveis para um objeto ATL.