PDA

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.

xblitz
06-09-2008, 18:36
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.

71104
07-09-2008, 10:47
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

71104
07-09-2008, 18:29
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