Sintomas
Sintoma 1
Quando compila um projecto do Microsoft Visual C++ que tem uma declaração de enumeração num desfasamento específico, poderá receber um erro de C2371, C2556 ou C2511.
Causa 1
Este problema ocorre porque o compilador analisa incorrectamente o código de declaração de enumeração que ocorre no final de um ficheiro na memória intermédia [no deslocamento de ficheiro (4096 * n) -1].
Sintoma 2
Compilar um projecto de Visual C++ que tem uma chamada de função virtual que devolve um objecto e que liga o valor devolvido para uma referência. Tem também a opção /clr activada. Nesta situação, poderá receber uma excepção de violação de acesso em tempo de execução.
Causa 2
Este problema ocorre porque a extensão de duração implícita de um valor temporário que está ligado a uma referência constante não funciona caso se verifiquem as seguintes condições:
-
O projecto é compilado como /clr.
-
O valor temporário é o valor devolvido de uma chamada de função virtual ou uma chamada de função através de um apontador de função.
Resolução
Informações sobre correção
Existe uma correção suportada pela Microsoft. No entanto, esta correção destina-se apenas a corrigir o problema descrito neste artigo. Aplique esta correcção apenas em sistemas que tenham este problema específico.
Se a correção está disponível para transferência, existe uma secção de "Transferência de Correção Disponível" na parte superior deste artigo da Base de Dados de Conhecimento. Se esta secção não for apresentado, submeta um pedido de suporte e serviço de cliente Microsoft para obter a correcção.
Nota Caso ocorram problemas adicionais ou se for necessária a resolução de problemas, poderá ter de criar um pedido de assistência separado. Os custos de normais do suporte serão aplicados a questões de suporte adicional e problemas incluídos nesta correção específica. Para uma lista completa dos números de telefone de suporte e serviço de cliente da Microsoft ou para criar um pedido de assistência separado, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=supportNota O formulário "Transferência de correcção disponível" apresenta os idiomas nos quais a correcção está disponível. Se não visualizar o seu idioma, é porque uma correcção não está disponível para esse idioma.
Pré-requisitos
Para aplicar esta correcção, tem de ter o Microsoft Visual Studio 2012 actualização 4 instalado.
Requisito de reinício
Poderá ter de reiniciar o computador depois de instalar a correcção se os ficheiros afectados não estão a ser utilizados no momento da instalação. Recomendamos que feche todos os componentes relacionados com o Visual Studio 2012 antes de instalar a correcção.
Estado
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".