PDA

View Full Version : dev-cpp


deviation
15-03-2003, 10:48
Ho installato da poco il dev-cpp versione 4.9.7.0
Ho provato subito a compilare il file di esempio: Hello e mi sono comparsi diversi errori(5). :muro:
Il rpimo è :
iostream.h: No such file or directory.
Il file è questo:
*************************************
#include <iostream.h>

int
main (int argc, char *argv[])
{
char quit;
quit = '\0';
while (quit != 'q')
{
cout << "Hello ! This is a console app." << endl;
cout << "To create a console, go to Project Options and select"
<< endl;
cout << "\'Win32 Console\'." << endl;
cout << "Press q to quit " << endl;
cin >> quit;
}
****************************************
in Tools->Compiler Options->Directories->C++ le directory:
c:\Dev-Cpp\include\C++
c:\Dev-Cpp\include.

:confused: Help!! :cry:

deviation
15-03-2003, 10:50
Ci manca un pezzo, è questo il listato:

#include <iostream.h>

int
main (int argc, char *argv[])
{
char quit;

quit = '\0';
while (quit != 'q')
{
cout << "Hello ! This is a console app." << endl;
cout << "To create a console, go to Project Options and select" << endl;
cout << "\'Win32 Console\'." << endl;
cout << "Press q to quit " << endl;
cin >> quit;
}

return 0;
}

cionci
15-03-2003, 11:43
Quale versione hai scaricato ? Con quale compialtore ?

deviation
15-03-2003, 12:00
Grazie cionci per l'interesse e per la risposta in privato.
L'ho preso dalla rivista "Io programmo". La versione è dev-cpp 4.9.7.0 con gcc32.

cionci
15-03-2003, 12:54
Prendi quella con Mingw 2.9.5...funziona meglio...il 3.2 è ancora troppo giovane...

deviation
17-03-2003, 10:07
Dove posso prenderla?

cionci
17-03-2003, 11:53
http://www.bloodshed.net/dev/devcpp.html

deviation
17-03-2003, 14:16
Grazie :D

Gibbus
17-03-2003, 18:21
Stavo per aprire una nuova discussioncina sul Dev-C++...ma mi conviene sfruttare questa :).

Allora, due quesiti (versione 4.9.7.0):

1. Come faccio a passare un valore long double ad una variabile mediante scanf (tra l'altro il dev-C++ attribuisce a questo tipo di dato ben 12 byte contro gli usuali 10 degli altri compilatori)? Molti compilatori accettano scanf("%Lf", &variabile);
Ma qui niente...non funziona.

2. La precedente versione (4.9.5.0) creava degli eseguibili piccoli-piccoli, stile Linux, ora invece gli eseguibile relativi agli stessi sorgenti sono cresciuti moltissimo, mediamente di 4 o 5 volte. C'è qualcosa da settare?

PS
Comunque la versione 4.9.7.0 rispetto alla precedente è un fulmine di guerra in floating point: ho misurato incrementi di prestazioni del 20-25% :)

cionci
17-03-2003, 23:08
La velocità di esecuzione è molte volte inversamente proporzionale alla dimensione del file...
Il GCC ha diverse opzioni di ottimizzazione delle prestazioni del codice: i vari -O, -O2, -O3...
All'aumentare delle ottimizzazioni cresce anche la dimensione dell'eseguibile...

Riguardo alla dimensione dei long double... Mi sembra strano che sia di 12 byte... La rappresentazione interna dell'unità floating point è di 80 bit...quindi è impossibile che il compilatore li faccia da 96 ;)

Probabilmente il discorso è un altro... La velocità dei trasferimenti dalla memoria alla CPU e viceversa dipende fortemente dall'allineamento...

80 bit sono 10 byte...se memorizzassi un intero dopo un floating point da 10 byte questo non sarebbe allineato con la linea zero del bus dati e necessiterebbe di due trasferimenti invece di uno unico per spostarlo in cache... Ecco perchè un floating point a 80 bit può occuparne 96...ma in definitiva ne utilizza solo 80...
La questione del'allineamento è anche questa legata a qualche opzione di ottimizzazione...

cionci
17-03-2003, 23:20
Esegui l'aggiornamento online...siamo già alla versione 4.9.7.6 ;)
Inoltre ti permette di scaricare un casino di librerie e documentazione (compreso un help per la libreria standard)...

%Lf dovrebbe funzionare...che problemi ti da ?

Gibbus
18-03-2003, 13:38
Innanzi tutto grazie per le risposte...:)

È strano che il long double occupi 12 byte...anche perché i 10 byte credo che siano uno standard per questo tipo di dato. Eppure sizeof(long double)
restituisce 12.

Allora, la compilazione viene eseguita regolarmente (senza nessuno messaggio di errore o warning): solo che ci sono problemi nel momento in cui si fanno operazioni sul tipo di dato, in particolare con le funzioni che lavorano con i tipi long double come sqrtl e molte altre. Un esempio scemo:

#include <stdio.h>
#include <math.h>

main()
{
long double x;

printf("\n Inserire un numero reale: x=");
scanf("%Lf", &x);

/* Il numero x viene visualizzato correttamente...quindi, almeno fin qui,
sembra che %Lf funzioni...*/
printf("\n Hai inserito: %Lf", x);

/* Qui ci sono problemi: visualizza sempre -2.000000: che sia colpa della
funzione [long double sqrtl(long double x)]? */
printf("\n\n Ecco la radice quadrata di x: %Lf", sqrtl(x));

getchar();

return 0;
}


Comunque, la gestione dei long double mi dava problemi anche con le versioni precedenti. Di sicuro ci deve essere qualche barbatrucco...non è possibile...
Domattina prova ad aggiornare.