Como posso encontrar cabeçalhos duplicados em uma grande solução em MSVC ++ 2005 ou 2008?

StackOverflow https://stackoverflow.com/questions/411142

Pergunta

No Visual Studio (C ++), há uma maneira para facilmente encontrar cabeçalhos duplicados que são definidos em arquivos .cpp?

Eu também estou tentando encontrar maneiras de detectar esta situação:

  • A inclui B inclui C
  • A inclui C
  • => A não precisa incluir C
Foi útil?

Solução

Se você quiser detectar esta situação você pode adicionar essa macro para o topo de cada arquivo. Substituir um para o nome do arquivo

#if A_H
#error "Duplicate include"
#else
#define A_H
#endif

Outras dicas

Geralmente, você marcá-los com #pragma uma vez, ou o equivalente macro guarda e parar de se preocupar sobre isso.

Se você estiver usando o compilador MS, você pode colocar uma mensagem #pragma (IIRC, pode ser um aviso # pragma ou erro #pragma vez) com o nome do arquivo de cabeçalho no topo de cada arquivo de cabeçalho e sua saída da compilação irá mostrar a lista de cada um que está sendo incluída por arquivo que está compilado.

Isso seria melhor trabalhar para seus arquivos de cabeçalho, como os do sistema não serão incluídos.

Se você quiser ver todos os cabeçalhos incluídos, editar as opções de compilação para incluir / P (pré-processar em um arquivo) que não irá compilar o código, mas em vez disso irá redirecionar o pré-processer para um arquivo, você pode então grep através dele para ver as instruções # include. Esteja ciente esses arquivos será grande.

PC-Lint (e provavelmente outras ferramentas fiapos) pode indicar não utilizado incluir arquivos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top