Nome do arquivo de cabeçalho como argumento
-
21-09-2019 - |
Pergunta
Objetivo:Eu tenho uma lista de arquivos de cabeçalho (cerca de 50 deles) e cada arquivo de cabeçalho tem poucas matrizes com elementos constantes. Preciso escrever um programa para contar os elementos da matriz. E crie outra forma de saída (que será usada pelo grupo de hardware).
Minha solução:Incluí todos os 50 arquivos ímpares e escrevi um aplicativo. E então eu despejei todos os elementos da matriz no formato especificado.
Meu ambiente:Visual Studio V6, Windows XP
Meu problema:Cada vez que há um novo conjunto de arquivos de cabeçalho, agora estou alterando as configurações do projeto VC ++ para apontar para o novo conjunto de arquivos de cabeçalho e, em seguida, reconstruir.
Minha pergunta:
Um pouco em sinceridade, porém, porém,
- Existe alguma maneira de mencionar o cabeçalho de alguns argumentos da linha de comando ou algo assim?
- Eu só quero evitar recilomar a fonte toda vez ...
Solução
O padrão C e C ++ permitem que você use uma macro em:
#include SOME_MACRO_HERE
O valor expandido de SOME_MACRO_HERE
deve parecer correto para um #include
diretivo.
Portanto, em princípio, você pode usar o equivalente ao MSVC de:
cc -DSOME_MACRO_HERE='<actualheader.h>' sourcefile.c
Ou:
cc -DSOME_MACRO_HERE='"actualheader.h"' sourcefile.c
Isso parece fornecer uma resposta para sua primeira pergunta.
Não estou convencido de que você possa evitar a recompilação - você pode (talvez) evitar a edição.
Outras dicas
Os cabeçalhos estão incluídos no horário de compilação, para que não haja meios para alterar/adicionar cabeçalhos em tempo de execução.
Por que você não escreve um script perl curto e simples que analisa os cabeçalhos e contam o número de itens de matriz?
Na verdade, cheguei a uma solução que funciona.
- Etapa 1: os nomes de arquivos do cabeçalho seriam predefinidos
- Etapa 2: cabeçalhos (definidos) com diferentes valores de parâmetros serão colocados em diferentes pastas
- Etapa 3: Enquanto compilar, aponte para o caminho com os cabeçalhos apropriados
A solução não é o que eu queria, mas ainda assim, era melhor eu conseguir descobrir.