Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C代码可以编译,但在arduino sketch中它不';T_C++_Arduino_Arduino C++ - Fatal编程技术网

C++ C代码可以编译,但在arduino sketch中它不';T

C++ C代码可以编译,但在arduino sketch中它不';T,c++,arduino,arduino-c++,C++,Arduino,Arduino C++,我有一些用GNU GCC编译的C代码,但当我把它放在arduino草图上时,它说 无法将参数“1”的“const float”转换为“float()[25]”以 '浮点数积(浮点数()[25],浮点数*)' 在草图中有函数sigmoid和forward以及dot_p,它们都已定义,我试图在草图本身上存储一些值,因为我无法在EEPROM上存储所有值,如果您能提供帮助,请提供任何额外的澄清 草图如下: #include <LiquidCrystal.h> const int rs = 1

我有一些用GNU GCC编译的C代码,但当我把它放在arduino草图上时,它说

无法将参数“1”的“const float”转换为“float()[25]”以 '浮点数积(浮点数()[25],浮点数*)'

在草图中有函数sigmoid和forward以及dot_p,它们都已定义,我试图在草图本身上存储一些值,因为我无法在EEPROM上存储所有值,如果您能提供帮助,请提供任何额外的澄清

草图如下:

#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

const float a[25][25] = { A LONG LIST OF NUMBERS arranged in 25X25};

  float b[25]={Another list of numbers};
 void setup() {}

 void loop() {}

 float dot_product(float v[][25], float u[])
{

    for (int j = 0; j< 25; j++){
             float result = 0.0;
    for (int i = 0; i < 25; i++){
        result += u[i]*v[j][i];

    }
    return result;
    }
}
double forward(float x){

    float lm[25];
    double km[25];
    double t=0;
    double output=0;
    for(int i=0; i <25; i++){
        lm[i] = 0;
        km[i] = 0;
    }
    for (int k=0; k<25; k++){
        lm[k]= dot_product(a[k],x);
        /*** THIS IS THE ERROR SOURCE***/


    }

     for (int j=0; j<25;j++){
      km[j] = sigmoid(lm[j]);

    }


    t = dot_p(km,b);
    output = sigmoid(t);

    return output;

}
#包括
常数int rs=12,en=11,d4=5,d5=4,d6=3,d7=2;
液晶显示器(rs、en、d4、d5、d6、d7);
const float a[25][25]={25X25中排列的一长串数字};
浮点数b[25]={另一个数字列表};
void setup(){}
void loop(){}
浮点数积(浮点数v[][25],浮点数u[]
{
对于(int j=0;j<25;j++){
浮动结果=0.0;
对于(int i=0;i<25;i++){
结果+=u[i]*v[j][i];
}
返回结果;
}
}
双向前进(浮动x){
浮动lm[25];
双公里[25];
双t=0;
双输出=0;

对于(int i=0;i,在删除所有“不需要的”代码并纠正几个小错误后,结果是:

// if you really want 'const', 
// then all references must also be 'const'
float a[25][25];

// the second parameter is from a float value
// not from an array of float values
float dot_product( float v[][25], float u )
{
    // initialize the float variable from a float literal
    // rather than from a double literal
    float result = 0.0f;

    for (int i = 0; i < 25; i++)
    {
        // since the function exits after summing a single
        // row, the 'j' is replaced with 0
        result += u * v[0][i];
    }
    return result;
}


void forward(float x)
{
    float lm = 0.0f;

    for (int k=0; k<25; k++)
    {
        // note: passing address of 'a[k]'
        lm += dot_product( &a[k], x );
    }
}
//如果您真的想要“const”,
//那么所有引用也必须是“const”
浮动a[25][25];
//第二个参数来自浮点值
//不是来自浮点值数组
浮点数积(浮点数v[][25],浮点数u)
{
//从浮点文本初始化浮点变量
//而不是从一个双重文字
浮动结果=0.0f;
对于(int i=0;i<25;i++)
{
//由于函数在求和单个
//第行,将“j”替换为0
结果+=u*v[0][i];
}
返回结果;
}
无效前进(浮动x)
{
浮动lm=0.0f;

对于(int k=0,KC还是C++代码?``ANTTI)?当前它将一个浮点变成指针(数组参数是指针)。GCC不应在没有大量警告的情况下接受此代码。即使GCC编译了此代码,它也无法工作。点积函数通常在参数处接受2个向量,但它被定义为接受一个矩阵和一个向量,并且您向它提供一个向量和一个标量。在不知道它应该做什么的情况下,不可能修复此代码。目前这是一个明智的猜测。它更容易被编译为C++,但是在那里调用构造函数调用……编译它是很容易的。让它做它应该做的事情是没有更多信息的困难。尤其是猜测<代码>前进/ <代码>的目的是什么,是有问题的。一个叫做代码> dotl产品< /代码>的函数。d通常计算两个向量的点积。只是在posters代码上进行黑客攻击,直到它编译,而不考虑代码应该做什么,这通常不是很有帮助。但是,这个答案只是显示了原始代码有多混乱