Come risolvere C ++ Errore R6002

November 29

L'errore di run-time R6002 C viene generato quando un programma C compilato con un compilatore Microsoft tenta di eseguire un'operazione che richiede il supporto a virgola mobile in cui le librerie in virgola mobile non sono stati collegati con il programma. La spiegazione più probabile è che nessun codice in virgola mobile è stato esplicitamente incluso nel codice, e il compilatore assunto non è stato necessario. Questo può essere causato da utilizzando printf con il "% f" di formato senza l'invio di un argomento reale a virgola mobile. L'aggiunta di un riferimento esplicito a virgola mobile per la chiamata è la soluzione più pulita, ma un'altra soluzione è possibile se la chiamata non può essere individuato o fissato.

istruzione

1 Cerca chiamate a printf o scanf (e funzioni correlate) che hanno una specifica di formato in virgola mobile. "% F" è la specifica più probabile, ma potrebbe essere utilizzato anche "% e," "% E", "% g" o "G%." È possibile che ci sono bandiere, una lunghezza o una specifica precisione così. Un'espressione regolare che dovrebbe trovare tutte le istanze è "%. * [FeEgG]."

2 Modificare la chiamata di funzione per lanciare in modo esplicito a un tipo di dati a virgola mobile. Il motivo più comune che non sarà già passando un argomento in virgola mobile è che si sta ponendo la funzione printf per formattare i dati memorizzati direttamente in un array di byte. I dettagli di eseguire in modo sicuro cast dipenderà in gran parte dallo specifica implementazione. Per chiarezza, si potrebbe desiderare di spostare la conversione in virgola mobile a una nuova linea.

3 Aggiungere un riferimento a una variabile in virgola mobile, se non riesci a trovare o modificare una chiamata printf o scanf. Questo costringerà al compilatore di includere le librerie in virgola mobile necessari. Se non è possibile individuare la linea di responsabilità nel proprio codice, è probabile che una libreria che si sta utilizzando sta causando l'errore, e l'aggiunta di una variabile in virgola mobile è la soluzione più semplice.

Consigli e avvertenze

  • L'errore di runtime R6002 può essere generato anche se vi capita di specificare una libreria C prima di una libreria FORTRAN in un programma di linguaggio misto. In questo caso, è sufficiente spostare le librerie FORTRAN alla parte anteriore della lista.
  • Se si genera questo errore sul vecchio hardware che esegue Windows 3.1 o precedente, il problema potrebbe essere la mancanza di un co-processore matematico. Rimuovere tutti i flag di compilazione o linker quali / FPi87 che richiedono l'uso di un co-processore. Il compilatore dovrebbe includere automaticamente le librerie per aggirare il problema.