valor una qué quitar que pregunta por pide parámetro parametros parametro parametrizada introduzca hace formulario escriba enviar crear consultas consulta con como c casting void

una - ¿Por qué convertir un valor de parámetro de función no utilizado en vacío?



por qué access me pide que escriba un valor de parámetro (2)

Está ahí para evitar advertencias del compilador porque algunos parámetros no se utilizan.

En algún proyecto de C, he visto este código:

static void *l_alloc (void *ud, void *ptr, size_t osize, size_t nsize) { (void)ud; (void)osize; /* some code not using `ud` or `osize` */ return ptr; }

¿Sirven los dos moldes para anular cualquier propósito?


La razón para tener parámetros no utilizados en el prototipo es generalmente porque la función necesita ajustarse a alguna API externa; tal vez sea una función de biblioteca, o un puntero a esa función se pasa a otra función que espera esta convención de llamadas. Sin embargo, no todos los argumentos utilizados por la convención de llamadas son realmente necesarios en la función en sí.

La razón para mencionar el nombre del parámetro en el cuerpo es evitar advertencias como

unused.c: In function ‘l_alloc’: unused.c:3:22: warning: unused parameter ‘ud’ [-Wunused-parameter] void *l_alloc (void *ud, void *ptr, size_t osize, size_t nsize) { ^~

Esta advertencia se puede suprimir con el uso del parámetro real en el cuerpo de la función. Por ejemplo, si tiene la siguiente declaración:

ud;

Esta advertencia ahora está suprimida. Sin embargo, ahora GCC producirá otra advertencia:

unused.c:5:5: warning: statement with no effect [-Wunused-value] ud; ^~

Esta advertencia dice que la declaración ud; , mientras que C es sintácticamente válida, no afecta nada en absoluto, y es posiblemente un error, no muy diferente del enunciado

abort;

que quizás debería haberse escrito como abort(); en su lugar, para que haga algo.

Y ahí es donde entra el yeso (void) : le dirá al compilador de manera inequívoca y explícita que la declaración no tiene ningún efecto en absoluto.