参数类型“ void”不完整

时间:2019-06-06 18:51:48

标签: c++ c void incomplete-type

我正在尝试编写此相对简单的代码,在其中我希望能够更改set_current的值。 错误消息:“参数类型'void'不完整”不断显示,我不确定为什么。

我不是经验丰富的编码员,但是我必须解决此问题才能上班。我真的希望你能帮助我。

void setCurrent(float set_current);

int main () { 
    printf("%i", setCurrent(0));
    printf("/n/r");
}

void setCurrent(float set_current){
    float v_set_cur = 1.25 + (ILIM_K_USE*set_current);

printf行上显示“参数类型'void'不完整”。当我删除0时,它可以工作,但我希望能够更改该数字。 我在这里想念什么?

4 个答案:

答案 0 :(得分:5)

您已将setCurrent声明为返回void(即什么也没有),但是在printf("%i", setCurrent(0));中,您期望它返回一个int。其中之一需要更改。

答案 1 :(得分:4)

  

我在这里想念什么?

您缺少函数setCurrent需要返回可以打印的值。换句话说-函数定义不得为void

我的猜测是您想要

float setCurrent(float set_current);  // Notice float instead of void

int main () { 
    printf("%f", setCurrent(0));      // Notice %f instead of %i
    printf("/n/r");
}

float setCurrent(float set_current){                    // Notice float instead of void
    float v_set_cur = 1.25 + (ILIM_K_USE*set_current);  // Calculate value
    return v_set_cur ;                                  // Return the value
}

答案 2 :(得分:3)

调用setCurrent时,不会返回任何内容。 void函数本质上不会返回值。根据您的printf语句,您期望从setCurrent调用一个整数。您似乎要返回浮点数,因为v_set_curr是浮点数。

float setCurrent(float set_current);

int main () { 
    printf("%f", setCurrent(0));
    printf("/n/r");
}

float setCurrent(float set_current){
    float v_set_cur = 1.25 + (ILIM_K_USE*set_current);
    return v_set_cur;
}

答案 3 :(得分:2)

void返回类型不返回任何值;因此您应该在setCurrent函数中进行打印操作。
尝试使用此代码

void setCurrent(float set_current);

int main () { 
    setCurrent(0);
    printf("/n/r");
}

void setCurrent(float set_current){
    float v_set_cur = 1.25 + (ILIM_K_USE*set_current);
    printf("%.2f", v_set_cur);
}