今日、ARM ツールチェーン EABI (クロスコンパイラ) で奇妙な問題に直面しました。
この問題は、浮動小数点値を string に変換するために snwprintf() を使用しようとしたときに、渡した実際の浮動小数点値を持たないジャンク文字列を取得していたことです。
サンプルコードは次のようになります。
float floatValue = 1.0;
snwprintf (buffer, bufferSize, _T("%g"), floatValue);
その後、snwprintf をデバッグしたところ、可変引数リスト (va_arg) が正確なデータ値を指していないことがわかりました。そして、メモリをダンプすることで、可変引数リストに存在する正確なデータを見つけることができました。va_arg が指すデータが異なります。
統合値が正常に機能しているため、これはエンディアンの問題ではないと思います。問題は double 値のみです。
誰でもこの問題で私を助けることができますか?