2017-03-24 4 views
0

これは本当に愚かな質問かもしれませんが、私はそれを取得しません... ASCII表現から関連する番号に変換するために私はVisual Studio 2012でstrtof()を使用します。https://msdn.microsoft.com/en-us/library/dn320175.aspx(およびaccordngそれがgccでうまくコンパイルされるLinuxのマンページに)stdlib.hをインクルードする必要があります。strtofは未定義です。 externがintを返すと仮定すると

私の問題:私はすでにと私のファイルに#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; 
} 
+0

MCVEを表示できますか? http://stackoverflow.com/help/mcve –

+0

エラーとコードを投稿してください。 –

+2

これはVisual Studio 2013以降に対応します。 'strtof'の代わりに' strtod'を使います。 – BLUEPIXY

答えて

1

問題は、Visual Studioは、C規格に準拠していないということです。 strtofは1999年にC言語で導入されました。これはVS2012がリリースされるわずか13年前です。マイクロソフトはまだこれらの変更にコンパイラを更新していませんでした。

私は今、VS2015バージョンのこの(以前の)C言語標準の部分サポートを導入したと思います。私は彼らが2011年から現在のC標準をサポートしているとは思わない。

あなたの最善の策は、代わりに標準準拠のCコンパイラを使用することです。

関連する問題