-1
votes

L'argument type 'void' est incomplet

J'essaie de coder ce code relativement simple dans lequel je veux pouvoir modifier la valeur de Set_Current. Le message d'erreur: "Le type d'argument" void "est incomplet" ne se présente pas et je ne sais pas pourquoi.

Je ne suis pas un codeur expérimenté, mais je dois résoudre ce problème pour le travail. J'espère vraiment que vous pourrez m'aider. P>

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


4 commentaires

SETCURRENT RETOURS TYPE NOID . Vous passez cela comme un argument sur printf .


Aussi, baliser uniquement la langue utilisée. C ou c ++?


Par "Supprimer le 0", je suppose que vous voulez dire printf ("% i", SETCurrent); . Si cela compile sans avertissements, je vous suggère d'essayer de renverser le niveau d'avertissement dans votre compilateur. Pour gcc et clang , -wall -wextra est bon, pour msvc / w4 ou / w3 . Parce que vous imprimez un pointeur avec "% i" , ce qui n'est généralement pas ce que vous voulez faire.


Lecture pratique sur la nature de Void


4 Réponses :


5
votes

Vous avez déclaré SETCURRENT comme renversement VOID (non, rien), mais dans Printf ("% I", SETCurrent (0)); / Code> Vous vous attendez à renvoyer un int . Une de ces choses doit être changée.


0 commentaires

3
votes

Lorsque vous appelez SetCurrent, rien n'est renvoyé. Une fonction vide ne retourne pas de valeur. Sur la base de votre déclaration PrintF, vous vous attendez à un entier d'appeler SetCurrent. Il semble que vous souhaitiez retourner un flotteur car v_set_curr est un flotteur.

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


1 commentaires

Merci pour les commentaires!



4
votes

Qu'est-ce que je manque ici?

Vous manquez que la fonction setCurrent doit renvoyer une valeur que vous pouvez imprimer. En d'autres termes - la définition de la fonction ne doit pas être vide .

mon hypothèse est que vous voulez: xxx


0 commentaires

2
votes

void code> Le type de retour ne renvoie aucune valeur; Donc, l'opération d'impression Vous devez faire à l'intérieur SetCurrent Code> Fonction.
Essayez ce code

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


1 commentaires

Je recommande contre cela. Une fonction devrait faire aussi près que possible d'une chose. Une fonction définir doit définir. Une fonction impression doit imprimer. La combinaison des responsabilités tend à rendre une fonction moins utilisable et plus difficile à vérifier.