Errore x me assurdo!

di il
19 risposte

Errore x me assurdo!

Salve a tutti

scusate se rompo le scatole di nuovo

int a, b, r,indy,max,primo,step;
	int vett[6];
	char accendino[33],sigaretta[38];
	char carattere[2];
	for (a = 0; a < 39; a++)
	{
		if (a < 2) { carattere[a] = ' '; }
		if (a<33) { accendino[a] = ' ';	}
		sigaretta[a] = ' ';
	}
	//---------------------------------------
	// da qui in giù mi da parecchi di questi errori
	// ne metto solo 2 giusto per far vedere!
	// Errore (attivo)	E0077	questa dichiarazione non include classe di archiviazione o identificatore di tipo
	//------------------------------------------------------------	
	indy = 1; 
	sigaretta[28] = ' '; sigaretta[29] = 'M'; sigaretta[30] = 'c';

come è possibile visto che sono delle semplici variabili definite?

grazie a tutti coloro che mi sapranno dare una spiegazione!

 

19 Risposte

  • Re: Errore x me assurdo!

    Non è tanto assurdo.

    Il vettore 

    sigaretta[38]

    ha elementi che vanno da 0 a 37 ma tu con la for assegni elementi che vanno da 0 a 38, causando un buffer overflow

  • Re: Errore x me assurdo!

    Ho fatto la modifica ma l'errore persiste inoltre l'errore lo da anche alla riga precendente e cioè

    indy=1
  • Re: Errore x me assurdo!

    Con la correzione il codice non ha problemi.

    Io l'ho provato all'interno di una funzione, tu dove l'hai messo?

  • Re: Errore x me assurdo!

    Come puoi vedere già all'apparenza la cosa mi sembra trana per via dei colori che non compaiono alle variabili

  • Re: Errore x me assurdo!

    Risolto mancava la parentesi graffa dopo la main!

    ma non poteva semplicemente dirmi guarda che manca la parentesi graffa al posto di darmi sta caterva di errori!

  • Re: Errore x me assurdo!

    Ma stai scherzando??

    Non hai inserito la parentesi per l'apertura della funzione main

     int main() {

  • Re: Errore x me assurdo!

    10/05/2024 - smalldragon ha scritto:


    ma non poteva semplicemente dirmi guarda che manca la parentesi graffa al posto di darmi sta caterva di errori

    No, non poteva dato che la sintassi prevede tantef forme possibili e il compilatore non può prevedere che tu abbia iniziato   a scrivere dentro una funzione o stia scrivendo ancora fuori dalla funzione.

    E poi quello è un errore (una dimenticanza) che difficilmente ho visto in vita mia nei programmi C 

  • Re: Errore x me assurdo!

    10/05/2024 - oregon ha scritto:


    Ma stai scherzando??

    Non hai inserito la parentesi per l'apertura della funzione main

     int main() {

    l'avrò cancellata per sbaglio in una delle modifiche che ho fatto al codice sono cose che possono capitare di solito le metto sempre a nuova riga ecco perchè non l'avevo notato all'inizio 

  • Re: Errore x me assurdo!

    10/05/2024 - oregon ha scritto:


    10/05/2024 - smalldragon ha scritto:


    ma non poteva semplicemente dirmi guarda che manca la parentesi graffa al posto di darmi sta caterva di errori

    No, non poteva dato che la sintassi prevede tantef forme possibili e il compilatore non può prevedere che tu abbia iniziato   a scrivere dentro una funzione o stia scrivendo ancora fuori dalla funzione.

    E poi quello è un errore (una dimenticanza) che difficilmente ho visto in vita mia nei programmi C 

    appunto perchè la sintassi prevede tante graffe aperte e tante graffe chiuse in numero uguale sarebbe la prima cosa da controllare in un compilatore a prescindere da dove uno stà scrivendo! farebbe risparmiare parecchi mal di testa e tempo hai programmatori specialmente nelle routine con parecchie istruzioni di selezione e di cicli dove e molto facile dimenticarsele.

    beh all'inizio della funzione hai ragione è più difficile dimenticarsela ma come ti dicevo prima quando si modifica il codice può capitare perchè si pensa solo alle modifiche! 

  • Re: Errore x me assurdo!

    10/05/2024 - smalldragon ha scritto:


    appunto perchè la sintassi prevede tante graffe aperte e tante graffe chiuse in numero uguale sarebbe la prima cosa da controllare

    Ma non era questione di aperte e chiuse perché, ti ripeto, se non le apri, quello che scrivi può significare altro.

    10/05/2024 - smalldragon ha scritto:


    tempo (H)ai programmatori

    Ai programmatori basterebbe scrivere correttamente e conoscere la sintassi del linguaggio, il compilatore poi fa quello che deve fare, non certo “interpretare” quello che vorresti scrivere.

  • Re: Errore x me assurdo!

    Ma si vede l'int sottolineato in rosso, bastava notare quello… il compilatore non può sapere se manca la graffa della funzione o il punto e virgola del prototipo

  • Re: Errore x me assurdo!

    10/05/2024 - Weierstrass ha scritto:


    Ma si vede l'int sottolineato in rosso, bastava notare quello… il compilatore non può sapere se manca la graffa della funzione o il punto e virgola del prototipo

    vero ma il compilatore potrebbe, e lo fa, contare le parità delle parentesi graffe! 

    in fondo c'è un codice, non ricordo quale sia, per la disparità delle parentesi!

    basterebbe semplicemente spostare l'avviso in cima!  tutto qui e si risparmierebbe parecchio tempo!

    vedi quando capitano queste dimenticanze si viene sommersi da una marea di errori molti dei quali non si capiscono a primo acchitto!

    comunque cosi l'hanno fatto il compilatore e noi ci dobbiamo adattare anche se questa piccola accortenza sarebbe ben gradita e non solo da me!    

  • Re: Errore x me assurdo!

    Ma perché dovrebbe contare le parentesi, che possono essere anche pari se sbagli da un'altra parte? 

    E comunque le parentesi non sono discriminanti ai fini della sintassi, ti è chiaro o no?

    Il compilatore analizza e vede

    int main() int

    e il secondo int non gli torna perché, in quel punto, ci può stare solo un ; o una parentesi graffa aperta.

    Tutto il resto degli errori lo devi ignorare perché dipendenti dai precedenti e quindi poco significiativi.

    Ti devi concentrare sul primo (ovvero perché viene segnato quell'int) e rimediare. Solo dopo devi controllare se gli altri errori sono stati risolti o no. In caso contrario, affronti il prossimo errore, ovvero il primo che si presenta e così via.

  • Re: Errore x me assurdo!

    10/05/2024 - oregon ha scritto:


    E comunque le parentesi non sono discriminanti ai fini della sintassi, ti è chiaro o no?

    adesso si!

    E comunque le parentesi non sono discriminanti ai fini della sintassi, ti è chiaro o no?

    è allora perchè segnala 

    Errore    C2143    errore di sintassi: ';' mancante prima di '}'   quando metto una graffa chiusa in più     

    Errore    C2447    '{': intestazione di funzione mancante. Elenco formale di tipo obsoleto?     quando metto una graffa aperta in più    

    10/05/2024 - oregon ha scritto:


    int main() int

    ma non potrebbe semplicemente dirmi :"alla riga tot mi aspetto “;” o “{” ?

    alias errore C2143 errore di sintassi! che è più logico e comprensibile! 

    invece di E0077 questa dichiarazione non include classe di archiviazione o identificatore di tipo!

    che in questo caso non centra un beep!

    ma infondo è quello che avevo fatto!

    comunque ci starò più attento a queste parentesi graffe!

    grazie per l'aiuto

Devi accedere o registrarti per scrivere nel forum
19 risposte