Compiladores para dispositivo inteligente Projects
Visual Studio inclui os compiladores seguintes microprocessadores usados em dispositivos inteligentes de destino:
compilador do C/C ++ de 32 bits usado para compilar e vincular 32-bit ARM C e C++ programas.
compilador do C/C ++ de 32 bits usado para compilar e vincular 32-bit Renesas SH-4 C e C++ programas.
Um compilador C/C ++ usado para compilar e vincular programas MIPS16, MIPS32, MIPS64 C e C++.
Os compiladores produzem arquivos de objeto de formato de arquivo de objeto comum.Os programas de compilador compilar cada arquivo de fonte e, a menos que seja especificado em contrário, um arquivo de objeto para cada compilar.Os compiladores incluam as opções listadas na linha de comando (CL), a variável de ambiente CL e quaisquer arquivos de resposta especificado.
Visual Studio compilador diferenças entre a área de trabalho e dispositivos
Difference |
Descrição |
---|---|
Avançado guia, Compilar para arquitetura na lista suspensa. |
Projetos de dispositivo em Propriedades do projeto, Avançado guia , Compilar para arquitetura lista, em C/C++ nó, tem as seguintes opções na caixa suspensa: Arm4 (/ QRarch4), ARM5 (/ QRarch5), Arm4t (/ QRarch4t), ARM5t (/ QRarch5t). |
Avançado guia, Interwork ARM e ARM Thumb na lista suspensa. |
Projetos de dispositivo em Propriedades do projeto, Avançado guia , Interwork ARM e ARM Thumb lista C/C++ nó, tem as seguintes opções na caixa suspensa: Sim (/ QRInterwork retorno) e nenhuma opção.Quando conjunto para Sim, o compilador gera código conversão (thunking) para interwork do código ARM de 16 e 32 bit. |
Avançado guia, Ativar emulação da ponto flutuante na lista suspensa. |
Projetos de dispositivo em Propriedades do projeto, Avançado guia, Ativar emulação da ponto flutuante na lista suspensa em C/C++ nó, tem as seguintes opções na caixa suspensa: Sim, and NÃO opção.Quando definido como Sim, o compilador permite que a emulação de operações de ponto flutuante. |
PreProcessor Tab, PreProcessorDefinitions input box. |
Device projects in Project Properties, PreProcessor tab, PreProcessorDefinitions input box, under C/C++ node, have a check box to Inherit From Parent or Project Defaults and a Macros button to add macros. |
Optimization Tab, Floating Point ConsistencyDefinitions drop-down list. |
Device projects in Project Properties, Optimization tab, Floating Point ConsistencyDefinitions drop-down list, under C/C++ node, have a drop-down list to select Default Consistency or Improve Consistency (/Op). |
Para obter informações adicionais consulte Opções de compilador listadas em ordem alfabética.
Alterações de versões anteriores do Visual Studio
Compilador alterações entre o Visual Studio 2003 e o Visual Studio 2005
Como os compiladores de dispositivo são baseados no compilador do Visual C++ do computador de mesa, examinar as diferenças entre as versões dos compiladores da área de trabalho oferece um panorama mercadoria das alterações entre os compiladores de dispositivo eMbedded Visual C++ e o Visual Studio 2005 compiladores de dispositivo. Para obter informações sobre as alterações entre o Visual Studio 6.0 e Visual Studio 2003, consulte Compatibilidade e Questões de compatibilidade em Visual C++.
A tabela a seguir resume as alterações de compilador entre o Visual Studio 2003 e o Visual Studio 2005.
Problema |
Descrição |
---|---|
Ponteiro para membros agora exigem nome qualificado, endereço - do operador (&) e o parêntese em chamadas de função. |
Código que foi escrito para versões anteriores do compilador usadas apenas o nome do método agora dará C3867 de erro do compilador ou C4867 de aviso do compilador.Este diagnóstico é necessária para o padrão ISO C++.Para criar um ponteiro para uma função de membro, o operador adress-of (&) e o nome totalmente qualificado do método deve ser usado. Erros podem resultar de não exigir o & e o nome totalmente qualificado do método, ou devido parênteses faltando em chamadas de função. Usar o nome da função sem uma lista de argumentos faz com que um ponteiro de função é convertido para vários tipos.Portanto, o código pode produzir um comportamento inesperado em time de execução. |
Uma classe deve ser acessível a um friend declaração. |
Compiladores Visual C++ anteriores ativado uma declaração de amigo para uma classe que não estava acessível no escopo da classe que contém a declaração.No Visual C++ 2005, essas circunstâncias fará com que o compilador gerar C2248 de erro do compilador.Para resolver esse erro, altere a acessibilidade da classe especificada na declaração amigo.Essa alterar foi feita em conformidade com o padrão ISO C++. |
Especialização explícita não é permitida sistema autônomo um construtor de cópia e o operador de atribuição de cópia. |
Código que depende de uma especialização de modelo explícita para um construtor de cópia ou operador de atribuição de cópia agora irá gerar C2299 de erro do compilador.O padrão ISO C++ não permite esse uso.Essa alterar foi feita por motivos de conformidade, para melhorar a portabilidade do código. |
Um modelo de classe unspecialized não pode ser usado sistema autônomo um argumento de modelo em uma lista de classe base. |
O uso de um nome de classe de modelo unspecialized na lista de classe base para uma definição de classe fará C3203 de erro do compilador.Não é válido para usar um nome de classe unspecialized modelo sistema autônomo um parâmetro de modelo em uma lista de classe base.Você deve adicionar explicitamente sistema autônomo parâmetros de tipo de modelo do nome de classe do modelo ao usá-lo sistema autônomo um parâmetro de modelo em uma lista de classe base.Essa alterar foi feita por motivos de conformidade e melhorar a portabilidade do código. |
A usando a declaração de tipo aninhado não é mais permitido. |
Código que tenha um usando a declaração de um tipo aninhado agora irá gerar C2885 de erro do compilador.Para resolver esse erro, você deve totalmente qualificar as referências a tipos aninhados, coloque o tipo de um espaço para nome ou criar um typedef. Essa alterar foi feita por motivos de conformidade, para melhorar a portabilidade do código. |
/YX opção do compilador é removida. |
The /YX opção do compilador gerado suporte automático cabeçalhos pré-compilados. Ele foi usado por padrão do ambiente de desenvolvimento.Se você remover o /YXopção do compilador de suas configurações de compilação, ele pode produzir compilações mais rápidas. Juntamente com problemas de desempenho, a /YX opção do compilador introduz a possibilidade de comportamento em time de execução inesperados. É melhor usar /Yc, Criar arquivo de cabeçalho pré-compilados, and /Yu,Usar arquivo de cabeçalho pré-compilados, que lhe dão mais controle sobre cabeçalhos pré-compilados como são usados. |
/Oa e /Ow Opções do compilador são removidas. |
The /Oa e /Ow Opções do compilador foram removidas e serão ignoradas. Use the noalias or restrictdeclspec modifiers to specify how the compiler does aliasing. |
/Op opção do compilador é removida. |
The /Opopção do compilador foi removida. Você pode usar /fp:precise em vez disso. |
/ML e /MLdOpções do compilador foram removidas. |
O Visual C++ 2005 não fornece suporte de biblioteca de CRT vinculado estaticamente, single-threaded.Você pode usar /MT e /MTd em vez disso. |
/G3, /G4, /G5, /G6, /G7, e /GBOpções de compilador tenham sido removidas / |
O compilador agora usa um modelo combinado que tentar criar o arquivo de saída recomendado para todas as arquiteturas. |
/Gf opção do compilador foi removida. |
Você pode usar /GF em vez disso. /GF coloca em pool cadeias de caracteres em uma seção somente leitura, que é mais segura do que a seção gravável no qual /Gf adicionado-los. |
/GS opção do compilador agora está ativado por padrão. |
Verificação de estouro de buffer está agora ativada por padrão.Você pode ativar a verificação com saturação do buffer/GS-. |
/Zc:wchar_t variável agora é ativada por padrão. |
Este é o comportamento padrão ISO C++: Uma variável de wchar_t padrão será o tipo interno, em vez de um inteiro curto não assinado.Essa alterar interromperá a compatibilidade binária quando o código do cliente está vinculado a bibliotecas que foram compiladas sem /Zc:wchar_t. Você pode usar /Zc:wchar_t- Para reverter para o comportamento antigo, não-padrão. Por padrão, essa alterar foi introduzida para criar código compatível. |
/Zc:forScope variável agora é ativada por padrão. |
Este é o comportamento padrão ISO C++: Código que depende do uso de uma variável declarada em um for Repetir após o for escopo de loop foi encerrada será não agora compilar. Você pode usar /Zc:forScope Para reverter para o comportamento antigo, não-padrão. Por padrão, essa alterar foi introduzida para criar código compatível. |
Impor o parâmetro de verificação de atributos do Visual C++. |
Código que passa chamado atributos para o construtor de atributo entre aspas quando o tipo não é uma seqüência de caracteres e sem as aspas quando o tipo é uma seqüência de caracteres, agora irá gerar compilador erro C2065 ou C4581 aviso do compilador (nível 1).Anteriormente, todos sistema autônomo atributos de compilador foram analisados sistema autônomo seqüências de caracteres e se for necessário, o compilador inserido sistema autônomo aspas estão falta.Suporte de atributo foi avançado, adicionando o parâmetro de verificação de validação.Essa alterar impede que um comportamento inesperado causa de argumentos incorretos sejam passados para o construtor de atributo. |
Compilador não injetará tipo int sistema autônomo o tipo de padrão sistema autônomo declarações. |
Código que está faltando o tipo em uma declaração não mais serão padrão para digitar int. O compilador gerará C4430 de aviso do compilador ou C4431 aviso do compilador (nível 4).O padrão ISO C++ não dá suporte a um padrão de int, e essa mudança ajudará a garantir que você obtenha o tipo especificado explicitamente. |
Para obter mais informações, consulte Quebrar alterações no compilador de 2005 Visual C++.