Digamos que eu tenho um arquivo de origem com muitas diretivas de pré-processador. É possível ver como fica depois do pré-processador?
206
Digamos que eu tenho um arquivo de origem com muitas diretivas de pré-processador. É possível ver como fica depois do pré-processador?
Respostas:
cl.exe
, a interface da linha de comandos para o Microsoft Visual C ++, possui três opções diferentes para a saída do arquivo pré-processado (daí a inconsistência nas respostas anteriores sobre o Visual C ++):/E
: pré-processo para stdout (semelhante à opção -E do GCC)/P
: pré-processo para arquivar/EP
: pré-processo para stdout sem diretivas #lineSe você deseja pré-processar em um arquivo sem as diretivas #line, combine as opções
/P
e/EP
.fonte
/P
suprimirá a geração de arquivos obj. Portanto, se você colocar/P
opções, poderá receber um erro no link informando que alguns arquivos obj não podem ser encontrados porque, na verdade, não são gerados.VS Developer command prompt
e NÃOCommand prompt
ao tentar usar o compilador MS (cl
). O compilador não está disponível no prompt de comando convencional.A maioria dos compiladores tem uma opção para executar apenas o pré-processador. por exemplo , o gcc fornece -E:
Então você pode simplesmente executar:
Se você não conseguir encontrar essa opção, também poderá encontrar o pré-processador C em sua máquina. Geralmente é chamado de cpp e provavelmente já está no seu caminho. Invoque-o assim:
Se houver cabeçalhos que você precise incluir em outros diretórios, você pode passar -I / path / to / include / dir para qualquer um desses diretórios, exatamente como faria com uma compilação regular.
No Windows, deixarei para outros pôsteres para fornecer respostas, pois não sou especialista lá.
fonte
Clique com o botão direito do mouse no arquivo no Solution Explorer, vá para Propriedades. Em Propriedades de configuração-> C / C ++ -> Pré-processador, "Gerar arquivo pré-processado" é o que você está procurando. Em seguida, clique com o botão direito do mouse no arquivo no Solution Explorer e selecione "Compilar". O arquivo pré-processado é criado no diretório de saída (por exemplo, Release, Debug) com uma extensão .i (obrigado a Steed por seu comentário).
fonte
Release
,Debug
) com uma extensão.i
.Normalmente, você precisa executar um pós-processamento na saída do pré-processador; caso contrário, todas as macros se expandem para um liners, o que é difícil de ler e depurar. Para o código C, algo como o seguinte seria suficiente:
Para código C ++, é realmente muito mais difícil. Para o GCC / g ++, achei este script Perl útil.
fonte
Não sei nada sobre o compilador da Microsoft, mas no GCC você pode usar isso:
Se você quiser ver comentários, use isto:
Mais opções disponíveis nesta página .
fonte
Tente
cl /EP
se você estiver usando o compilador C ++ da Microsoft.fonte
No Visual Studio, você pode compilar um arquivo (ou projeto) com / P.
fonte
Como bk1e e Andreas M. responderam, a opção / P para o compilador fará com que ele pré-processe um arquivo. No entanto, no meu projeto usando o VS2005 e o Platform Builder (para um processador ARM incorporado), o projeto não apresentou uma opção na caixa de diálogo (conforme descrito por Jim B) para habilitá-la.
Eu poderia executar o CL manualmente e adicionar / P, mas falhou porque não conhecia todas as opções de linha de comando apropriadas que estavam invisivelmente sendo ativadas pelo Platform Builder durante a compilação completa. Então, eu precisava conhecer todas essas opções.
Minha solução foi procurar no arquivo build.log e encontrar a linha que executou
CL blah-blah-blah myfile.c
Copiei esta linha para a área de transferência. A parte "blá-blá-blá" continha as opções de compilação e era enorme.
De volta ao IDE, cliquei com o botão direito do mouse em myfile.c, escolhi "Abrir janela de compilação" e, nessa janela, colei a linha de comando da compilação e adicionei um "/ P".
CL /P blah-blah-blah myfile.c
Feito. O arquivo myfile.i foi produzido, que continha a saída do pré-processador.
fonte
CPIP é um novo pré-processador C / C ++ escrito em Python. Se você quiser uma representação visual detalhada de um arquivo pré-processado, faça uma tentativa.
fonte
No sistema operacional Windows, uma resposta simples de uma linha para esta pergunta é usar o comando abaixo no prompt do DOS para ver o arquivo pré-processado:
Isso irá gerar um arquivo chamado myprogram.i . Abra-o e procure seus pré-processadores expandidos.
fonte