skiller10 Posted July 15, 2013 at 01:44 PM Report #518797 Posted July 15, 2013 at 01:44 PM 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.."
pikax Posted July 15, 2013 at 01:56 PM Report #518799 Posted July 15, 2013 at 01:56 PM 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."
skiller10 Posted July 15, 2013 at 03:29 PM Author Report #518817 Posted July 15, 2013 at 03:29 PM 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.."
HappyHippyHippo Posted July 15, 2013 at 03:36 PM Report #518818 Posted July 15, 2013 at 03:36 PM (edited) 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", ¶ms.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 July 15, 2013 at 03:37 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
skiller10 Posted July 15, 2013 at 03:45 PM Author Report #518819 Posted July 15, 2013 at 03:45 PM 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.."
pikax Posted July 15, 2013 at 03:47 PM Report #518820 Posted July 15, 2013 at 03:47 PM (edited) 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 July 15, 2013 at 03:48 PM 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."
HappyHippyHippo Posted July 15, 2013 at 03:48 PM Report #518821 Posted July 15, 2013 at 03:48 PM 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 Portugol Plus
Rui Carlos Posted July 15, 2013 at 11:54 PM Report #518866 Posted July 15, 2013 at 11:54 PM 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. Rui Carlos Gonçalves
skiller10 Posted July 16, 2013 at 08:39 PM Author Report #518999 Posted July 16, 2013 at 08:39 PM 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.."
Rui Carlos Posted July 17, 2013 at 03:48 PM Report #519102 Posted July 17, 2013 at 03:48 PM 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. Rui Carlos Gonçalves
skiller10 Posted July 21, 2013 at 01:27 AM Author Report #519492 Posted July 21, 2013 at 01:27 AM (edited) 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 July 21, 2013 at 01:28 AM 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.."
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now