可能这是一个非常愚蠢的问题,但我不明白...我希望在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/

10-09 01:15