# define....
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 11 di 11

Discussione: # define....

Cambio titolo
  1. #1
    developing... L'avatar di Slimmy
    Registrato il
    07-03
    Località
    NSApplication
    Messaggi
    6.417

    # define....

    ricevo un errore usanto define...

    In pratica do #define EOS '\0' per definire come costante EOS fine stringa... uso questa costante nel programma (in un altro file...) ma il compilatore dice EOS undeclared.

    Come mai?? Eppure il testo del professore lo compila (a parte che appena lanciato fa piantare tutto.... )

  2. #2
    Utente L'avatar di bottomap
    Registrato il
    02-05
    Località
    Firenze
    Messaggi
    148
    Ciao,
    Dove hai dichiarato EOS? Il modulo (.c o .cpp) che lo deve utilizzare la dovrà in qualche modo vedere... la cosa migliore è piazzarla in un .h (assieme ad eventuali altre dichiarazioni "globali") e poi #includere il .h quando necessario...

    Ciaociao
    Venite a visitarci qui: http://www.bottomap.com/

  3. #3
    developing... L'avatar di Slimmy
    Registrato il
    07-03
    Località
    NSApplication
    Messaggi
    6.417
    Ho trovato l'errore!!! Proprio un deficiente sono stato!
    Avevo creato 3 files:
    - main.c
    - header.h (che conteneva prototipi di funzioni, e la definizione di EOS)
    - lib.c (contiene le funzioni)

    L'unico problema è che avevo salvato lib.c come lib.h!!

  4. #4
    developing... L'avatar di Slimmy
    Registrato il
    07-03
    Località
    NSApplication
    Messaggi
    6.417
    mmm... ora non mi funziona più il programma... vi posto un po' il codice..
    MAIN.C
    Codice:
    # include "header.h"
    
    
    int main() {
        char var[] ="questa stringa e' lunga 26";
        
        printf("\n%s\nstrlen=%d\n",var,strlen(var));
        printf("questa e' la stringa 1:\n\n%s\n\n Questa e il duplicato:\n\n%s\n\n",var,strdup(var));
        printf("ciao + tutti -> %s",strcat("ciao","tutti"));
        
        system("PAUSE");
    }
    header.h
    Codice:
    # include <stdlib.h>
    # include <stdio.h>
    //# define EOS '\0'
    
    int strlen(char*);
    char* strdup(char*);
    char* strcat(char*,char*);
    //char* strdelchar(char*, char);
    lib.c
    Codice:
    # include "header.h"
    
    int strlen(char *stringa)
    {
        int i=0;
        
        for (i=0; stringa[i]!= '\0' ;i++)
        ;
        return i;
    }
    
    char* strdup(char *stringa)
    {
          char *nuova;
          int i;
          
          
          nuova=(char*)malloc(strlen(stringa)+1);
          if (nuova==0)
          {
                       printf("\nErrore di allocazione. Stringa non duplicata\n");
                       return;
          }
          for (i=0;i<(strlen(stringa)+1);i++)
          {
              nuova[i]=stringa[i];
          }
          
          return nuova;
    }
    
    char* strcat(char *stringa1,char *stringa2)
    {
          int j=0, i;
          char *str3;
          
          str3 = (char*) malloc (strlen(stringa1)+strlen(stringa2)+1);
          if (str3==0)
          {
                       printf("\nErrore di allocazione. Stringa non duplicata\n");
                       return;
          }
          for (i=0;stringa1[i]!='\0';i++)
          {
              str3[j]=stringa1[i];
              j++;
          }
          for (i=0;stringa2[i]!='\0';i++)
          {
              str3[j]=stringa2[i];
              j++;
          }        
          str3[j]='\0';
          return str3;
               
    }
    Quando lo eseguo si pianta prima di eseguire strcar, e nel debug mi da: errore d'accesso: errore di segmentazione.

    PS. per far uscire la funzione senza restituire niente?? basta return;??

  5. #5
    developing... L'avatar di Slimmy
    Registrato il
    07-03
    Località
    NSApplication
    Messaggi
    6.417
    Ho provato a sostituire il codice della funzione nel main e funziona... il problema sembra la chiamata della funzione..

  6. #6
    developing... L'avatar di Slimmy
    Registrato il
    07-03
    Località
    NSApplication
    Messaggi
    6.417
    Vi aggiungo un indizio.

    Mettendo l'intera funzione nel main (sia prima, sia dopo il main) funziona tutto... Quale potrebbe essere il problema??
    Sono nelle vostre mani!

    Inoltre ho creato delle altre funzioni e.... non me le trova!!! Ma &#232; dev-cpp che da i ciocchi o cosa ho sbagliato io??
    Ultima modifica di Slimmy; 1-03-2006 alle 18:00:04

  7. #7
    developing... L'avatar di Slimmy
    Registrato il
    07-03
    Località
    NSApplication
    Messaggi
    6.417
    risolto .
    Potete chiudere!

    EDIT:
    in caso di pi&#249; files &#232; obbligatorio creare un progetto???

  8. #8
    developing... L'avatar di Slimmy
    Registrato il
    07-03
    Località
    NSApplication
    Messaggi
    6.417
    Ho bisogno di un grosso chiarimento.

    Cerco di spiegarmi bene:
    Salvando il main come .c e anche il file con le funzioni (quindi da compilare con il vecchio C) per una funzione (la terza) si piantava durante l'esecuzione, per altre che ho aggiunto dopo mi dava errore il linker dicendomi che non le trovava.

    Cambiando le estensioni in .cpp tutte le funzioni non venivano linkate.
    Ho messo tutto in un progetto e... Funziona.

    Ma la mia domanda &#232;: se io programmassi con ... nano e compilassi da shell con gcc .......ecc come si fa il progetto?? Quindi la soluzione al mio precedente problema non &#232; il progetto, vero?? ci sar&#224; un'altra spiegazione.
    Spero che riusciate ad illuminarmi.


    EDIT: void main() &#232; possibile?? M$ visual lo permette, dev-cpp no.
    Ultima modifica di Slimmy; 1-03-2006 alle 19:29:16

  9. #9
    Utente L'avatar di devilheart
    Registrato il
    01-03
    Messaggi
    28.310
    Citazione Slimmy
    Ma la mia domanda è: se io programmassi con ... nano e compilassi da shell con gcc .......ecc come si fa il progetto?? Quindi la soluzione al mio precedente problema non è il progetto, vero?? ci sarà un'altra spiegazione.
    Spero che riusciate ad illuminarmi.
    puoi provare con
    gcc -o nomeeseguibile <lista sorgenti>


    EDIT: void main() è possibile?? M$ visual lo permette, dev-cpp no.
    void main() non è un prototipo standard. usa int main() o int main(int argc, char *arvg[])

  10. #10
    developing... L'avatar di Slimmy
    Registrato il
    07-03
    Località
    NSApplication
    Messaggi
    6.417
    Citazione devilheart
    puoi provare con
    gcc -o nomeeseguibile <lista sorgenti>


    void main() non è un prototipo standard. usa int main() o int main(int argc, char *arvg[])
    Quindi facendo la "lista" durante la compilazione dovrebbe funzionare tipo il progetto.

    Immaginavo che void non fosse standard, infatti non lo uso. Ma un mio amico voleva farmelo usare... e mi ha chiesto che cavolo di compilatore usavo che non accettava void.. secondo me era il contrario!

  11. #11
    Utente L'avatar di devilheart
    Registrato il
    01-03
    Messaggi
    28.310
    Citazione Slimmy
    Quindi facendo la "lista" durante la compilazione dovrebbe funzionare tipo il progetto.

    Immaginavo che void non fosse standard, infatti non lo uso. Ma un mio amico voleva farmelo usare... e mi ha chiesto che cavolo di compilatore usavo che non accettava void.. secondo me era il contrario!
    se i files sono main.c lib.c altro.c dovresti dare
    gcc -o progetto main.c lib.c altro.c

    usare int main() è senz altro una buona abitudine dato che puoi piazzarci i return per gli exit status

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •