0

このライブラリを使用してフロートを文字列に変換しています: http://www.arduino.cc/playground/Main/FloatToString?action=sourceblock&ref=1

これはコードのスニペットで、flt の出力は "29.37" のようになります。

    float flt = tempSensor.getTemperature();
    char buffer[25];
    char str[20];
    Serial.print(floatToString(str, flt, 2, 10));

これはすぐに使用できるはずですが、そうではありません。これらは私のコンパイルエラーです:

.../floatToString.h:11: エラー: ',' トークンの前にプライマリ式が必要です
.../floatToString.h: 関数 'char* floatToString(char*, float, int, int, bool)' 内:
.../floatToString.h:11: エラー: 'char* floatToString(char*, float, int, int, bool)' のパラメーター 5 のデフォルト引数がありません
.../floatToString.h:73: エラー: 'itoa' はこのスコープで宣言されていません
.../floatToString.h:89: エラー: 'itoa' はこのスコープで宣言されていません
4

3 に答える 3

0

C++ では、最後のすべてのパラメーターのみがデフォルト値を持つことが許可されています。

BAD rightjustify にはデフォルト値が必要です:

char * floatToString(char * outstr, float value, int places,
    int minwidth=0, bool rightjustify) {

OK: デフォルト値はありません。最後の 1 つまたは最後の 2 つのパラメーターにはデフォルト値があります

char * floatToString(char * outstr, float value, int places,
    int minwidth, bool rightjustify) {

char * floatToString(char * outstr, float value, int places,
    int minwidth, bool rightjustify=false) {

char * floatToString(char * outstr, float value, int places,
    int minwidth=0, bool rightjustify=false) {

ヘッダーを確認してください。リンクしたものは現在使用しているものではないと思います。

問題への別のポインターがあります: ito はコンパイラーにとって不明です。にあるはずなcstdlibので、#include <cstdlib>がありません。ヘッダーに依存しているため、ヘッダーに配置します。

于 2010-07-07T19:28:08.483 に答える
0

default argument missing for parameter 5 of 'char* floatToString(char*, float, int, int, bool)

値が不足しているようです:floatToString(str, flt, 2, 10)

TrueそこにorFalseを最後に追加してみてください

于 2010-07-07T19:18:57.520 に答える