RISOLUZIONE ESERCIZIO

di il
20 risposte

20 Risposte - Pagina 2

  • Re: RISOLUZIONE ESERCIZIO

    Si , ho trascritto io male il codice , grazie mille per l'aiuto.
    Esiste un buon libro che spieghi bene questo linguaggio con anche esercizi ?
  • Re: RISOLUZIONE ESERCIZIO

    Dai un'occhiata QUI. Ci sono un sacco di link.
  • Re: RISOLUZIONE ESERCIZIO

    Si infatti ho sbagliato io a trascrivere il codice , ho una domanda da farti per chiarirmi le idee

    Da subito mi hai detto che la dichiarazione del main corretta è
    int main(void) 
    perchè? sul libro dall'inizio e per ogni esempio il main lo dichiara sempre così
    main()
  • Re: RISOLUZIONE ESERCIZIO

    Come dicevo sopra, buttalo sto libro

    La dichiarazione main() non può funzionare su nessun compilatore decente (non ne conosco uno che non ti dia per lo meno un warning), e su una architettura standard.

    In generale, se vuoi approfondire dai un'occhiata al capitolo 5.1.2.2.1 dello standard C

    5.1.2.2.1 Program startup

    The function called at program startup is named main. The implementation declares no
    prototype for this function. It shall be defined with a return type of int and with no
    parameters:
    
    int main(void) { /* ... */ }
    
    or with two parameters (referred to here as argc and argv, though any names may be
    used, as they are local to the function in which they are declared):
    
    int main(int argc, char *argv[]) { /* ... */ }
    
    or equivalent;10) or in some other implementation-defined manner.


    Oltre a questo si può dire che esisterebbe anche la possibilità di dichiarare un main come
    
    void main (void)
    
    Su applicazioni embedded dove un main non torna mai al codice di startup (super-loop).

    Penso che questi siano discorsi che puoi evitare di comprendere per ora, limitati a quello che dice lo standard.


    Inoltre considera che definire delle funzioni come () senda specificare void, del tipo
    
    void foo()
    
    è molto pericoloso e deprecato dal c90.

    Ultima cosa: per intercettare questo tipo di errori, visto che siamo nel 2017, cerca sempre di compilare con uno standard aggiornato e un compilatore aggiornato.
    Per esempio se usi gcc puoi aggiungere sempre l'opzione -std=c11 per compilare secondo lo standard che ti ho linkato all'inizio del post.


    Spero di non averti scogl....stancato troppo. Buon lavoro
  • Re: RISOLUZIONE ESERCIZIO

    No figurati , anzi ti ringrazio tanto per il tempo che mi hai dedicato , io come compilatore utilizzo dev c++, va bene o ne posso usare uno migliore?
  • Re: RISOLUZIONE ESERCIZIO

    Dev C++ è un IDE (Integrated Development Environment). Per i progetti c immagino tu abbia installato minGW, quindi stai usando gcc come compilatore, che va più che bene.
Devi accedere o registrarti per scrivere nel forum
20 risposte