Jump to content
skiller10

[Resolvido] Dynamic Header File

Recommended Posts

skiller10

Boas tardes,

Estou a fazer um programa em C que inclui um header file que tem algumas variáveis definidas. Só que como provavelmente este header file pode ser alterado muitas vezes, gostava que fosse dinâmico, ou seja, poder passá-lo como argumento ao programa. Já investiguei um pouco, embora confesse que tenha tido pouco tempo, mas não encontrei nada que me ajudasse e nem sei sequer se é possível.

Obrigado a todos desde já,

skiller10

PS: Não inclui código no post pois achei pouco necessário mas posso colocar caso seja necessário.


"Eu acredito que a vida está constantemente nos testando em nosso nível de confiança, e a vida tem grande recompensa reservada àqueles que demonstram uma confiança sem fim para agir até conseguir. Este nível de resolução pode mover montanhas, mas ele tem de ser constante e consistente. Tão simples quanto isso possa soar, ainda é o denominador comum que separa aqueles que vivem seus sonhos dos que vivem simplesmente.."

Share this post


Link to post
Share on other sites
pikax

podes explicar melhor o porque que necessitas que seja dinamico?

com #ifdef's nao vais la'?


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
skiller10

Basicamente o programa precisa de certos dados, e existem várias alternativas e não queria criar um programa para cada alternativa ou estar sempre a ir ao codigo alterar o que quero usar no momento. Também pensei em renomear o que é para usar para um certo nome, mas não fica bonito xD

Nunca usei #ifdef's mas pelo que li não dá :s


"Eu acredito que a vida está constantemente nos testando em nosso nível de confiança, e a vida tem grande recompensa reservada àqueles que demonstram uma confiança sem fim para agir até conseguir. Este nível de resolução pode mover montanhas, mas ele tem de ser constante e consistente. Tão simples quanto isso possa soar, ainda é o denominador comum que separa aqueles que vivem seus sonhos dos que vivem simplesmente.."

Share this post


Link to post
Share on other sites
HappyHippyHippo

existe duas abordagens:

- lista de parâmetros a ser dada na execução da aplicação

// linha de comandos:
// app -o 34

struct Params {
 // params ...

 int o;
};

int main(int argc, char ** argv) {
 struct Params params;
 int i;

 // inicializar "params" com valores por defeito

 for (i = 1; i < argc; i++) {
   // processar argv[i] e actualizar a estrutura "params" com os valores dados
   if (strcmp(argv[i], "-o") == 0) { // exemplo para -o 34
     sscanf("%d", &params.o);
   }
 }

 // ...

 return 0;
}

- escolha de um conjunto de parâmetros na execução da aplicação

// linha de comandos:
// app tipo1

struct Params {
 // params ...
};

int main(int argc, char ** argv) {
 struct Params params;
 int i;

 // inicializar "params" com valores por defeito

 if (argc > 1) {
   if (strcmp(argv[1], "tipo1") == 0) {
     // popular a estrutura params com os valores da da situação "tipo1"
   } else if (strcmp(argv[1], "tipo2") == 0) {
     // ...
   }
 }

 // ...

 return 0;
}

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
skiller10

Não é isso que pretendo. Eu tenho um programa que vai gerar um header file, e o que quero é que este segundo programa inclua esse header file.


"Eu acredito que a vida está constantemente nos testando em nosso nível de confiança, e a vida tem grande recompensa reservada àqueles que demonstram uma confiança sem fim para agir até conseguir. Este nível de resolução pode mover montanhas, mas ele tem de ser constante e consistente. Tão simples quanto isso possa soar, ainda é o denominador comum que separa aqueles que vivem seus sonhos dos que vivem simplesmente.."

Share this post


Link to post
Share on other sites
pikax

qual e' o IDE? acho que consegues usar o pre-build para gerar o *.h.

tens que explicar melhor o porque^ de quereres fazer isso, dar um exemplo por exemplo.

EDIT: ou usas um makefile!

Edited by pikax

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
HappyHippyHippo

uma aplicação nunca pode ser alterada após compilação. se tens um header novo, terás sempre de recompilar a aplicação.

ou começas a apresentar um exemplo concreto, ou a tua dúvida irá ficar em aberto por muito tempo ... porque senão as respostas começas a ser:

#include "header.h"


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Rui Carlos

Suspeito que está a usar headers para fins pouco recomendáveis.

Se o teu objectivo é teres várias definições diferentes de variáveis, se calhar o melhor é pensares em usar um ficheiro de configurações por exemplo.

Mas se deres mais detalhes sobre o problema, talvez se arranje uma solução melhor. Agora alterar o programa gerado, embora não seja completamente impossível, não é propriamente fácil.

Share this post


Link to post
Share on other sites
skiller10

Obrigado a todos pela ajuda.

Como entretanto não encontrei uma maneira de colocar os headers dinâmicos, contornei a situação criando um programa que vai pegar no header e criar um novo programa ja com esse header.

Quanto aos fins não é nada ilegal! :)


"Eu acredito que a vida está constantemente nos testando em nosso nível de confiança, e a vida tem grande recompensa reservada àqueles que demonstram uma confiança sem fim para agir até conseguir. Este nível de resolução pode mover montanhas, mas ele tem de ser constante e consistente. Tão simples quanto isso possa soar, ainda é o denominador comum que separa aqueles que vivem seus sonhos dos que vivem simplesmente.."

Share this post


Link to post
Share on other sites
Rui Carlos

Quanto aos fins não é nada ilegal! :)

Acho que ninguém pensou isso. A hipótese que se coloca é que estejas a resolver um determinado problema com hacks, e que poderia haver uma alternativa melhor.

Share this post


Link to post
Share on other sites
skiller10

Obrigado a todos pela ajuda.

Acho que esta solução serve perfeitamente para o que preciso e também não posso divulgar mais detalhes, pelo menos por agora :s

Edited by skiller10

"Eu acredito que a vida está constantemente nos testando em nosso nível de confiança, e a vida tem grande recompensa reservada àqueles que demonstram uma confiança sem fim para agir até conseguir. Este nível de resolução pode mover montanhas, mas ele tem de ser constante e consistente. Tão simples quanto isso possa soar, ainda é o denominador comum que separa aqueles que vivem seus sonhos dos que vivem simplesmente.."

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.