Per semplicità ho diviso il programma che sto sviluppando su 3 file:
-main.c
-client.c
-server.c
Ora vorrei fare che , ad esempio
in main.c:
se il valore di x è = 6 -->esegui client.c
se il valore di x è = 2 -->esegui server.c
Come si fa?
grazie
Per semplicità ho diviso il programma che sto sviluppando su 3 file:
-main.c
-client.c
-server.c
Ora vorrei fare che , ad esempio
in main.c:
se il valore di x è = 6 -->esegui client.c
se il valore di x è = 2 -->esegui server.c
Come si fa?
grazie
#IF x==6
#include <client.c>
#ELIF x==2
#include <server.c>
#ENDIF
[Homepage] [Contattami]
Powered by: Ubuntu - Debian - Gentoo
Developing: Java - C++ - PHP
[supersaibal]"Perchè tanto Debian è meglio"[/supersaibal]
Grazie
Non va, cmq risolvo in un altro modocodice:printf("a- client\n"); printf("b- server\n"); printf("q- uscita\n"); printf("i- info\n"); scanf("%c",&scelta); #IF scelta = 'a' #include <client.c> #ENDIF
Secondo il mio modesto parere, le opzioni del precompilatore non dovrebbero essere usate nel test di variabili.
La cosa più logica, a mio avviso (non volendo ricorrere alle classi del c++) sarebbe fare una cosa di questo tipo:
Le due funzioni chiamate, client() e server(), sarebbero due funzioni paragonabili alle "main" dei rispettivi moduli di codice (cioè due funzioni madri da cui richiamare tutte le altre funzioni utili).codice:extern "C" int client (...); extern "C" int server (...); if (...) client (); /* Funzione contenuta in client.c e dichiarata come extern nel modulo corrente */ else server(); /* Funzione contenuta in server.c e dichiarata come extern nel modulo corrente */
In questo modo accederesti ai due moduli di codice in modo ragionato e strutturato. Scrivere un'inclusione di un intero modulo di codice è come copiarlo e incollarlo pedissequamente all'interno del codice chiamante, tutto compreso.
ChReAn
-------------------
Slackware 9.1 powered
Grazie ora provo
Sono d' accordo con ChReAn,
comunque ci tenevo a sottolineare un imprecisione nel tuo codice:
#IF scelta = 'a' non deve essere un assegnamento, ma un confronto percio' dovresti utilizzare 2 segni di uguaglianza ==,
#IF scelta == 'a'
codice:printf("a- client\n"); printf("b- server\n"); printf("q- uscita\n"); printf("i- info\n"); scanf("%c",&scelta); #IF scelta = 'a' #include <client.c> #ENDIF
la chiamata unix execve() esegue un programma esterno (il cui percorso è specificato al momento della chiamata). Se usi unix è sufficiente che chiami execve e come argomento metti una stringa col percorso dell'eseguibile da avviare... al momento della chiamata il programma terminerà e al suo posto verrà eseguito il nuovo programma.
Se invece vuoi che il main non si chiuda, ma rimanga in esecuzione anche dopo che l'altro programma è stato avviato allora devi usare prima una fork() per creare un nuovo processo e la solita execve()...
In win non conosco di preciso le chiamate ma penso ce ne siano di molto simili
Ok, grazie
ci provero