GNU/Linux >> Linux Esercitazione >  >> Linux

Come rimuovere questo avviso:secondo parametro di "va_start" non l'ultimo argomento nominato?

Devi usare size invece di fmt :

va_start(args, size);

È size , non fmt , ovvero l'ultimo parametro che ha un nome esplicito (al contrario dei parametri vararg, che non hanno nomi). Devi passare l'ultimo parametro denominato a va_start in modo che possa capire l'indirizzo in memoria da cui iniziano i parametri vararg.


second parameter of ‘va_start’ not last named argument

Cosa significa e come rimuoverlo?

La tua funzione ha parametri denominati parent , fmt e size . La specifica C dice che devi sempre passare l'ultimo parametro nominato a va_start , per compatibilità con i compilatori meno recenti. Quindi devi superare size , non fmt .

(Ma con un compilatore moderno potrebbe funzionare comunque)


Penso che ci sia confusione qui:la maggior parte delle persone si occupa solo di funzioni simili a prinf che hanno formato e varargs. e pensano di dover passare il nome del parametro che descrive il formato. tuttavia va_start non ha nulla a che fare con nessun tipo di formato simile a printf. questa è solo una funzione che calcola l'offset sullo stack dove iniziano i parametri senza nome.


Linux
  1. Come ordinare l'output per dimensione?

  2. Come correggere l'errore dell'editor Vi / Vim — E319:Spiacenti, il comando non è disponibile in questa versione

  3. Come rimuovere X byte dalla fine di un file di grandi dimensioni senza leggere l'intero file?

  4. Come usare sed per rimuovere le ultime n righe di un file

  5. Come rimuovo una connessione socket CLOSE_WAIT

Come rimuovere una directory in Linux

Come usare du Command in Linux

Come rimuovere il repository remoto Git

Come trovare l'ultimo accesso su Linux

Come estrarre e/o rimuovere l'ultima pagina di un mucchio di PDF?

Come disabilitare ATTENZIONE:apt non ha un'interfaccia CLI stabile...