web-dev-qa-db-fra.com

Paramètres par défaut en C

Est-il possible de définir des valeurs pour les paramètres par défaut en C? Par exemple:

void display(int a, int b=10){
//do something
}

main(){
  display(1);
  display(1,2); // override default value
}

Visual Studio 2008, se plaint d'une erreur de syntaxe dans l'affichage -void (int a, int b = 10). Si ce n'est pas légal en C, quelle est l'alternative? S'il vous plaît, faites-moi savoir. Merci.

32
user1128265

Les paramètres par défaut sont une fonctionnalité C++.

C n'a pas de paramètres par défaut.

52
ouah

Il n'est pas possible dans la norme C.Une alternative consiste à coder les paramètres dans le nom de la fonction, comme par ex.

void display(int a){
    display_with_b(a, 10);
}

void display_with_b(int a, int b){
    //do something
}
13
Joni

Il n'y a pas de paramètres par défaut en C.

Une façon dont vous pouvez obtenir ceci est de passer des pointeurs NULL, puis de définir les valeurs par défaut si NULL est passé. C'est dangereux, donc je ne le recommanderais pas sauf si vous avez vraiment besoin de paramètres par défaut.

Exemple

function ( char *path)
{
    FILE *outHandle;

    if (path==NULL){
        outHandle=fopen("DummyFile","w");
    }else
    {
        outHandle=fopen(path,"w");
    }

}
5
RussS

Pas comme ça...

Vous pouvez utiliser un tableau int ou un varargs et remplir les données manquantes dans votre fonction. Vous perdez cependant les contrôles de temps de compilation.

2
Dtyree