Nwlapcug.com


Come risolvere errore C++ da R6002

Quando un programma in C compilato con un compilatore tenta di eseguire un'operazione che richiede supporto a virgola mobile quando librerie a virgola mobile non sono state collegate con il programma di Microsoft, viene generato l'errore di runtime di C da R6002. La spiegazione più probabile è che nessun codice a virgola mobile è stato incluso in modo esplicito nel codice, e il compilatore presume che non era necessario. Questo può essere causato dall'utilizzo di printf con l'identificatore di formato "%f" senza inviare un argomento effettivo a virgola mobile. Aggiungere un riferimento esplicito a virgola mobile alla chiamata è la soluzione più pulita, ma un'altra soluzione è possibile se la chiamata non può essere situata o fisso.

Istruzioni

1

Ricerca per chiamate a printf o scanf (e funzioni correlate) che hanno una specifica di formato a virgola mobile. "%f" è la specifica più probabile, ma potrebbe essere anche utilizzato "%e," "%E," "%g" o "% G." È possibile che non ci sono bandiere, una lunghezza o una specifica di precisione pure. È un'espressione regolare che dovrebbe trovare tutte le istanze "%. * [feEgG]."

2

Modificare la chiamata di funzione al cast esplicito a un tipo di dati a virgola mobile. Il motivo più comune che non sarò già passando un argomento a virgola mobile è che si sta chiedendo la funzione printf per formattare i dati archiviati direttamente in una matrice di byte. I dettagli di esecuzione in modo sicuro il cast dipenderà in gran parte l'implementazione specifica. Per maggiore chiarezza, è possibile spostare la conversione in virgola mobile in una nuova riga.

3

Se non è possibile trovare o modificare una chiamata printf o scanf, aggiungere un riferimento a una variabile a virgola mobile. Questo impone al compilatore di includere le librerie necessarie a virgola mobile. Se non è possibile individuare la linea responsabile nel proprio codice, è probabile che l'errore è causato da una libreria che si utilizza, e aggiungendo a virgola mobile punto variabile è la soluzione più semplice.

Consigli & Avvertenze

  • Errore di run-time da R6002 può essere generato anche se vi capita di specificare una libreria C prima una libreria FORTRAN in un programma con linguaggio misto. In questo caso, semplicemente spostare le librerie FORTRAN all'inizio dell'elenco.
  • Se questo errore viene generato su hardware meno recenti che eseguono Windows 3.1 o versioni precedenti, il problema potrebbe essere la mancanza di un coprocessore matematico. Rimuovere eventuali flag del compilatore o del linker come /FPi87 che richiedono l'uso di un co-processore. Il compilatore deve includere automaticamente le librerie per aggirare il problema.