View Full Version : conformita' del linguaggio C ISO 9899:1990
_TRuBBuZJo_
06-09-2008, 16:10
Ciao a tutti mi trovo a valutare le seguenti righe di codice e precisamente dovrei dire se sono conformi al linguaggio C ISO 9899:1990 o al C ISO 9899:1999, potreste darmi una mano a capirlo?:help: :help:
int x=2;int y,z;
int f(int x){
int m=2;
if (z=x) printf ("uno %d,%d\n",y--,x);
if(z<=0) {
m=0;
return 1;
}
else{
int m=2,y=1;
printf ("due %d\n",m+x);
y+=f(x-1);
static int x=2;
print f("tre %d \n",(x--,m+(y<=f(x))));
return y;
}
}
int main (){
f(x--);
}
Grazie mille:D :D
variabilepippo
06-09-2008, 16:25
Se usi la suite GNU GCC aggiungi le opzioni -ansi -pedantic alla linea di comando. Ad occhio non compila...
_TRuBBuZJo_
06-09-2008, 16:51
Se usi la suite GNU GCC aggiungi le opzioni -ansi -pedantic alla linea di comando. Ad occhio non compila...
USO IL DEV-C++ CMQ MI INTERESSAVA PRINCIPALMENTE SAPERE QUALE STANDARD RISPETTA IL CODICE SOPRA DESCRITTO O PER LO MENO CARATTERISTICHE PRINCIPALI DEL C89 E C99.:D
variabilepippo
06-09-2008, 17:03
1) Dev-C++ è un ambiente di sviluppo (datato), non un compilatore. Il compilatore usato da Dev-C++ è MinGW, ossia la versione per Windows della suite GNU GCC.
2) Non scrivere in maiuscolo, su un forum equivale ad urlare e qui nessuno è sordo... :)
3) Compila il codice da linea di comando con il comando gcc (ed i parametri -ansi -pedantic). Non ricordo come si specificano i parametri in Dev-C++, ma di sicuro puoi impostarli tra le opzioni di progetto. Controlla.
3) Compila il codice da linea di comando con il comando gcc (ed i parametri -ansi -pedantic). Non ricordo come si specificano i parametri in Dev-C++, ma di sicuro puoi impostarli tra le opzioni di progetto. Controlla.
Dovrebbe essere Strumenti -> Opzioni di compilazione -> mettere la spunta su "aggiungi i comandi seguenti in fase di compilazione" e sotto mettere quello che hai detto tu.
due opzioni che ti danno maggior controllo sullo standard sono -std=c89 e -std=c99
DanieleC88
07-09-2008, 11:40
Ad occhio è C99, quanto meno per la dichiarazione di static int x=2; effettuata a metà della funzione, nemmeno in testa ad un blocco.
_TRuBBuZJo_
07-09-2008, 16:04
Dovrebbe essere Strumenti -> Opzioni di compilazione -> mettere la spunta su "aggiungi i comandi seguenti in fase di compilazione" e sotto mettere quello che hai detto tu.
1.mi scuso per avere scirtto in maiuscolo e che sono io un po sordo :D
2.il mio problema di preciso è quello di capire se il codice è scritto in base allo standard c89 o c99:D
_TRuBBuZJo_
07-09-2008, 16:09
due opzioni che ti danno maggior controllo sullo standard sono -std=c89 e -std=c99
se queste due opzioni le devo mettere nelle opzioni della compilazione dove dice xblitz gia ho provato e nn mi segnala niente di diverso sia se metto -stdc89 sia -stdc99 quindi penso che rispetti il c89 visto che, essendo il primo standard, nn ho problemi nella compilazione.giusto?:D
2) Non scrivere in maiuscolo, su un forum equivale ad urlare e qui nessuno è sordo... :) 1.mi scuso per avere scirtto in maiuscolo e che sono io un po sordo :D ed ecco la gaffe di variabilepippo :asd:
se queste due opzioni le devo mettere nelle opzioni della compilazione dove dice xblitz gia ho provato e nn mi segnala niente di diverso sia se metto -stdc89 sia -stdc99 quindi penso che rispetti il c89 visto che, essendo il primo standard, nn ho problemi nella compilazione.giusto?:D non te lo dico con certezza visto che non ricordo in che modo -ansi e -pedantic influenzano la compilazione e non so nemmeno se le hai specificate e in che ordine, ma penso di si (sorgente compatibile con C89).
per sicurezza controlla qua: http://www.linuxmanpages.com/man1/gcc.1.php
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.