2017-03-24 3 views
0

vielleicht ist dies eine wirklich dumme Frage, aber ich verstehe es nicht ... für die Konvertierung von einer ASCII-Darstellung zu verwandten Nummer verwende ich strtof() in Visual Studio 2012. Nach https://msdn.microsoft.com/en-us/library/dn320175.aspx (und accordng auf Linux-Manpages, wo es gut mit gcc kompiliert wird, muss stdlib.h enthalten sein.strtof undefined; angenommen, dass extern zurück

Jetzt mein Problem: Ich habe bereits haben ein #include <stdlib.h> in meiner Datei, aber immer noch diese Kompilierung Fehler!

Irgendeine Idee was könnte fehlen?

Danke!

Edit: Codebeispiel

#include <stddef.h> 
#include <stdlib.h> 

static char *get_xyz(char *c,float *x,float *y,float *z) 
{ 
    c++; 

    if ((*c=='X') || (*c == 'A') || (*c=='x') || (*c=='a')) 
    { 
     c++; 
     if (*c) *x=strtof(c,NULL); 
    } 

    if ((*c=='Y') || (*c=='B') || (*c=='y') || (*c=='b')) 
    { 
     c++; 
     if (*c) *y=strtof(c,NULL); 
    } 

    if (z) 
    { 
     if ((*c=='Z') || (*c=='C') || (*c=='z') || (*c=='c')) 
     { 
     c++; 
     if (*c) *z=strtof(c,NULL); 
     } 
    } 

    return c; 
} 
+0

können Sie einen MCVE anzeigen? http://StackOverflow.com/Help/Mcve –

+0

Geben Sie den Fehler und den Code ein. –

+2

Es entspricht Visual Studio 2013 oder höher. Verwenden Sie 'strtod' anstelle von' strtof'. – BLUEPIXY

Antwort

1

Das Problem ist, dass Visual Studio nicht mit dem C-Standard entspricht. strtof wurde in der C-Sprache im Jahr 1999 eingeführt, das war nur 13 Jahre vor der Veröffentlichung von VS2012. Microsoft hatte ihren Compiler noch nicht auf diese Änderungen aktualisiert.

Ich denke, sie haben jetzt endlich Teilunterstützung für diesen (früheren) C-Sprachstandard mit der VS2015-Version eingeführt. Ich glaube nicht, dass sie den aktuellen C-Standard von 2011 überhaupt unterstützen.

Am besten verwenden Sie stattdessen einen standardkonformen C-Compiler.