|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2008
Messaggi: 588
|
[C++] Errori di compilazione
ciao..ieri ho riscontrato un problema con un sorgente che avevo scritto tempo fa. Il fatto e' che tempo fa (circa 1 anno) il sorgente (compilato con Visual studio) non mi ha dato problemi ed e' stato creato l'eseguibile....
Ora pero' lo stesso sorgente e con lo stesso compilatore mi da un sacco di errori che non riesco a capire.. quando lancio la compilazione mi appare una scritta con scritto che il progetto non e' aggiornato. vi linko il file col codice sorgente >> link grazie in anticipo!!! Ultima modifica di ElChip : 13-10-2009 alle 17:01. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Dec 2005
Città: Provincia di Vicenza
Messaggi: 174
|
Ciao,
più che il sorgente sarebbe utile che postassi gli errori di compilazione. Marco |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2008
Messaggi: 588
|
si scusa..hai ragione..
ecco tutti gli errori che mi compaiono: qui vedete degli errori riguardo alla SQRT(). Precedentemente me li dava anche con la FABS(), che sostituendola con la ABS() ho risolto (sembra) Codice:
1>------ Inizio compilazione: Progetto: equazion2, Configurazione: Debug Win32 ------ 1>Compilazione in corso... 1>equazion.cpp 1>e:\myworld\coding\c++\es c++\cap4_equazione2grado\equazione2grado\equazion2\equazion.cpp(523) : warning C4018: '<=': errata corrispondenza tra signed e unsigned 1>e:\myworld\coding\c++\es c++\cap4_equazione2grado\equazione2grado\equazion2\equazion.cpp(774) : error C2668: 'sqrt': chiamata ambigua a funzione in overload 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(581): potrebbe essere 'long double sqrt(long double)' 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(533): o 'float sqrt(float)' 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(128): o 'double sqrt(double)' 1> durante la ricerca di corrispondenza con l'elenco di argomenti '(int)' 1>e:\myworld\coding\c++\es c++\cap4_equazione2grado\equazione2grado\equazion2\equazion.cpp(775) : error C2668: 'sqrt': chiamata ambigua a funzione in overload 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(581): potrebbe essere 'long double sqrt(long double)' 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(533): o 'float sqrt(float)' 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(128): o 'double sqrt(double)' 1> durante la ricerca di corrispondenza con l'elenco di argomenti '(int)' 1>e:\myworld\coding\c++\es c++\cap4_equazione2grado\equazione2grado\equazion2\equazion.cpp(788) : error C2668: 'sqrt': chiamata ambigua a funzione in overload 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(581): potrebbe essere 'long double sqrt(long double)' 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(533): o 'float sqrt(float)' 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(128): o 'double sqrt(double)' 1> durante la ricerca di corrispondenza con l'elenco di argomenti '(int)' 1>e:\myworld\coding\c++\es c++\cap4_equazione2grado\equazione2grado\equazion2\equazion.cpp(789) : error C2668: 'sqrt': chiamata ambigua a funzione in overload 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(581): potrebbe essere 'long double sqrt(long double)' 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(533): o 'float sqrt(float)' 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(128): o 'double sqrt(double)' 1> durante la ricerca di corrispondenza con l'elenco di argomenti '(int)' 1>Il log di compilazione è stato salvato in 'file://e:\MyWorld\Coding\C++\ES C++\cap4_equazione2grado\equazione2grado\equazion2\Debug\BuildLog.htm' 1>equazion2 - 4 errore/i, 1 avviso/i ========== Compilazione: 0 completate, 1 non riuscite, 0 aggiornate, 0 ignorate ========== |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Dec 2005
Città: Provincia di Vicenza
Messaggi: 174
|
Ciao,
la funzione 'sqrt' ha 3 definizioni (vedi msdn) double sqrt( double x ); float sqrt( float x ); // C++ only long double sqrt( long double x ); // C++ only la tua funzione 'se_radice_intera' prende in input 'const int soluzione[MAXVETT]' che è un intero, poi nel codice chiami: double sol1 = sqrt( fabs(soluzione[0]) ); //numeratore il compilatore non sa quale overload di 'sqrt' utilizzare. Molto banalmente potresti castare 'soluzione[0]' come 'double': double sol1 = sqrt( fabs((double)soluzione[0]) ); //numeratore lo stesso discorso vale anche per 'fabs'. ciao Marco |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2008
Messaggi: 588
|
Quote:
il fatto e' che gcc compiler me lo fa passare e visual studio no...mi sembra piuttosto strano, anche perche' come ho gia' detto tempo fa avevo compilato lo stesso sorgente con visual studio e senza problemi comunque grazie |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:42.




















