Preferisco utilizzare una macro, in quanto indica non solo al compilatore la mia intenzione, ma altri manutentori del codice, ed è ricercabile in seguito.
Il metodo di commentare il nome dell'argomento può essere facilmente ignorato da persone che non conoscono il codice (o me 6 mesi dopo).
Tuttavia, si tratta di un problema di stile, nessuno dei due metodi è "migliore" o più ottimale per quanto riguarda il codice generato, le prestazioni o la robustezza. Per me, il fattore decisivo è informare gli altri del mio intento attraverso un sistema standardizzato. Omettendo il nome del parametro e mettere in un commento funzionerebbe altrettanto bene:
void CFooBar::OnLvnItemchanged(NMHDR *pNMHDR, LRESULT *pResult)
{
UNREFERENCED_PARAMETER(pNMHDR);
alternativa:
void CFooBar::OnLvnItemchanged(NMHDR* /* pNMHDR */, LRESULT *pResult)
{
// Not using: pNMHDR
direi che la soluzione peggiore è sopprimere il messaggio di avviso; che ciò influirà sul tuo intero file o progetto e perderai la consapevolezza che forse ti sei perso qualcosa. Almeno aggiungendo la macro, o commentando il nome dell'argomento, hai detto ad altri che hai preso una decisione consapevole di non usare questo argomento e che non è un errore.
Windows SDK in WinNT.h definisce UNREFERENCED_PARAMETER()
insieme a DBG_UNREFERENCED_PARAMETER()
e DBG_UNREFERENCED_LOCAL_VARIABLE()
. Valutano tutti la stessa cosa, ma la differenza è che DBG_UNREFERENCED_PARAMETER() viene utilizzato quando si avvia e si prevede di utilizzare il parametro quando il codice è più completo. Quando sei sicuro di non utilizzare mai il parametro, utilizza la versione UNREFERENCED_PARAMETER().
Microsoft Foundation Classes (MFC) ha una convenzione simile, con i più corti UNUSED()
e UNUSED_ALWAYS()
macro.
Scegli uno stile e bastone con esso. In questo modo più avanti puoi cercare "DBG_UNREFERENCED_PARAMETER
" nel tuo codice e trovare le istanze di dove ti aspettavi di usare un argomento, ma non l'hai fatto. Adottando uno stile coerente e usandolo abitualmente, lo renderete più facile per gli altri e voi stessi in seguito.
Usa boost :: ignore_unused (param) http://stackoverflow.com/a/24310846/888576 –