2012-02-07 33 views
25

¿Es posible establecer valores para los parámetros predeterminados en C? Por ejemplo:Parámetros predeterminados en C

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

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

Visual Studio 2008, las quejas que hay un error de sintaxis en pantalla -void (int a, int b = 10). Si esto no es legal en C, ¿cuál es la alternativa? Por favor hagamelo saber. Gracias.

+1

De hecho, no es legal en C. C también no tiene sobrecarga. – Mysticial

+0

Posible duplicado: http://stackoverflow.com/questions/1472138/c-default-arguments –

+0

http://stackoverflow.com/questions/2988038/default-values-on-arguments-in-c-functions-and- función-sobrecarga-en-c –

Respuesta

36

Los parámetros predeterminados son una característica de C++.

C no tiene parámetros predeterminados.

4

No hay parámetros por defecto en C

Una forma puede conseguir con esto es que pasar de punteros NULL y luego establecer los valores para el valor predeterminado si se pasa NULL. Esto es peligroso, así que no lo recomendaría a menos que realmente necesite los parámetros predeterminados.

Ejemplo

function (char *path) 
{ 
    FILE *outHandle; 

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

} 
9

No es posible en la norma C. Una alternativa es para codificar los parámetros en el nombre de la función, como por ejemplo,

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

void display_with_b(int a, int b){ 
    //do something 
} 
+1

+1. También me gusta la práctica en un comentario sobre [esta respuesta] (http://stackoverflow.com/a/1472310/790070), donde el nombre de la función incluye el número de parámetros que toma. –

1
No

de esa manera ...

Se podría utilizar un array int o un varargs y rellenar los datos que faltan dentro de su función. Sin embargo, pierdes las comprobaciones de tiempo de compilación.

Cuestiones relacionadas