可能这是一个非常愚蠢的问题,但我不明白...我希望在Visual Studio 2012中使用strtof()从ASCII表示形式转换为相关数字。根据https://msdn.microsoft.com/en-us/library/dn320175.aspx(根据Linux手册页,它可以与gcc一起正常编译)stdlib.h需要包含在内。
现在我的问题是:我的文件中已经有一个#include <stdlib.h>
,但仍然会出现此编译错误!
知道会丢失什么吗?
谢谢!
编辑:代码示例
#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;
}
最佳答案
问题是Visual Studio不符合C标准。 strtof
于1999年以C语言引入,距VS2012发行仅13年。 Microsoft尚未将其编译器更新为这些更改。
我认为他们现在终于在VS2015版本中引入了对此(先前)C语言标准的部分支持。我认为他们从2011年起就不再支持当前的C标准。
最好的选择是使用兼容标准的C编译器。
关于c - strtof未定义;假设extern返回int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42993356/