Conversione stringa

gloria19881
Ciao a tutti. Qualcuno di voi saprebbe dirmi perchè questo pezzo di codice scritto per la conversione di una stringa in un numero mi da errore dove c'è la scritta
bool sign=false
;


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

#define BIN

double s2f(char*s){   /*dichiaro la funzione in grado di convertire la stringa in numero*/
static double etens [9]={10.0, 100.0, 10000.0, 100000000.0, 10e16, 10e32, 10e64, 10e128, 10e256};
bool sign = false;/*sto inizializzando il segno del mio numero*/
double r=0;
double mult=1.0;


Grazie a tutti!!!!

Risposte
gloria19881
Ragazzi ho risolto il problema. Probabilmente il compilatore dev c++ non accetta la dichiarazione con bool, allora ho scritto
 int sign=0

e me lo compila correttamente.

apatriarca
Per una volta non è colpa di Dev-C++... Il tipo bool non è presente in C *, ma solo in C++. Se il tuo professore ti ha insegnato diversamente allora è lui in errore.

* C'è in realtà un tipo booleano nello standard del 99. Ma questo standard non è mai stato realmente accettato e usato. Dovresti però in tal caso includere stdbool.h per poter usare bool, true e false al posto di _Bool, 1 e 0.

gloria19881
Allora adesso includo subito quella libreria bool, anche se ho provato a inserire direttamente il codice fatto dal professore e non andava bene. Infatti nemmeno lui ha inserito stdbool.h!!!Grazie mille!!!

apatriarca
Come ho detto lo standard del 99 non è molto usato o accettato e sono tantissimi i compilatori che non lo supportano ancora adesso dopo più di 10 anni (e il compilatore incluso in Dev-C++ è molto datato e non credo abbia un supporto anche solo discreto). È in realtà molto semplice implementare un tipo booleano usando una enumerazione come in
enum Bool {FALSE = 0, TRUE = 1};
typedef enum Bool Bool;

ma il più delle volte puoi semplicemente farne a meno usando al suo posto un tipo intero. Un'altra soluzione un po' poco ortodossa (che probabilmente usa il tuo professore) è quella di rinominare il file in modo che abbia l'estensione ".cpp" e dovrebbe magicamente compilare senza problemi (il C++ è per la maggior parte compatibile con il C e supporta i bool per cui il tuo codice dovrebbe compilare senza problemi se compilato come codice in C++).

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.