Тип аргумента 'void' является неполным - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь закодировать этот относительно простой код, в котором я хочу изменить значение 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);

"Тип аргумента 'void' не завершен" отображается в строке printf.Когда я удаляю 0, тогда это работает, но я хочу иметь возможность изменить это число.Что мне здесь не хватает?

Ответы [ 4 ]

5 голосов
/ 06 июня 2019

Вы объявили setCurrent как возвращающее void (т.е. ничего), но в printf("%i", setCurrent(0)); вы ожидаете, что оно вернет int. Одна из этих вещей должна быть изменена.

4 голосов
/ 06 июня 2019

Что мне здесь не хватает?

Вам не хватает, что функция 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
}
3 голосов
/ 06 июня 2019

Когда вы вызываете setCurrent, ничего не возвращается. Функция void по своей сути не возвращает значение. Основываясь на вашем выражении printf, вы ожидаете целое число от вызова setCurrent. Похоже, вы хотите вернуть float, потому что v_set_curr является float.

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;
}
2 голосов
/ 06 июня 2019

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);
} 
...