Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [C]collegare codice

  1. #1

    [C]collegare codice

    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

  2. #2
    #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]

  3. #3

  4. #4
    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
    Non va, cmq risolvo in un altro modo


  5. #5
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    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:

    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 */
    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).
    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

  6. #6

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    97
    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

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    20
    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

  9. #9

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.