GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo eliminar esta advertencia:el segundo parámetro de 'va_start' no es el último argumento con nombre?

Necesitas usar size en lugar de fmt :

va_start(args, size);

Es size , no fmt , ese es el último parámetro que tiene un nombre explícito (a diferencia de los parámetros vararg, que no tienen nombres). Debe pasar el último parámetro nombrado a va_start para que pueda averiguar la dirección en la memoria en la que comienzan los parámetros vararg.


second parameter of ‘va_start’ not last named argument

¿Qué significa y cómo eliminarlo?

Su función tiene parámetros con nombre parent , fmt y size . La especificación C dice que siempre debe pasar el último parámetro nombrado a va_start , para compatibilidad con compiladores más antiguos. Entonces debes pasar size , no fmt .

(Pero con un compilador moderno, podría funcionar de todos modos)


Creo que aquí hay una confusión:la mayoría de las personas solo se ocupan de funciones similares a las de impresión que tienen formato y varargs. y creen que tienen que pasar el nombre del parámetro que describe el formato. sin embargo, va_start no tiene nada que ver con ningún tipo de formato similar a printf. esta es solo una función que calcula el desplazamiento en la pila donde comienzan los parámetros sin nombre.


Linux
  1. ¿Cómo acceder al último argumento de un comando comentado?

  2. ¿Eliminar todo lo que haya entre la segunda y la penúltima coincidencia?

  3. Cómo reparar el error del editor Vi / Vim — E319:Lo sentimos, el comando no está disponible en esta versión

  4. Cómo obtener el tamaño del directorio en Linux

  5. Así es como funciona un servidor Linux

Cómo eliminar un directorio en Linux

Cómo usar du Command en Linux

Cómo eliminar el repositorio remoto de Git

Cómo encontrar el último inicio de sesión en Linux

¿Cómo crear un archivo con el nombre de un argumento de línea de comando?

/etc/motd no se muestra cuando hay una canalización con nombre?