我正在使用此库将浮点数转换为字符串: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:错误:“,” token 之前的预期主表达式
.../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”

最佳答案

在C++中,仅允许所有最后一个参数具有默认值:

BAD rightjustify必须具有默认值:

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

确定:没有默认值,最后一个或两个最后一个参数具有默认值
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>,我将其放在 header 中,因为它取决于它。

关于c++ - float 到Arduino编译错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3198031/

10-11 18:48