Ich bevorzuge mit einem Makro, da es nicht nur den Compiler meine Absicht, sondern auch andere Betreuer des Codes, und es ist später suchbar.
Die Methode zum Auskommentieren des Argumentnamens kann leicht von Personen übersehen werden, die mit dem Code nicht vertraut sind (oder mich 6 Monate später).
Es ist jedoch ein Stil-Problem, beide Methoden sind "besser" oder besser in Bezug auf Code-Generierung, Leistung oder Robustheit. Entscheidend ist für mich, dass ich über ein standardisiertes System andere über meine Absichten informiert. Das Weglassen der Parameternamen und in einem Kommentar setzen würde gleich gut funktionieren:
void CFooBar::OnLvnItemchanged(NMHDR *pNMHDR, LRESULT *pResult)
{
UNREFERENCED_PARAMETER(pNMHDR);
Alternativ:
void CFooBar::OnLvnItemchanged(NMHDR* /* pNMHDR */, LRESULT *pResult)
{
// Not using: pNMHDR
Ich würde sagen, dass die schlechteste Lösung, die Warnmeldung zu unterdrücken; Das wirkt sich auf Ihre gesamte Datei oder Ihr Projekt aus und Sie werden das Wissen verlieren, dass Sie etwas übersehen haben. Zumindest durch Hinzufügen des Makros oder Auskommentieren des Argumentnamens haben Sie anderen gesagt, dass Sie sich bewusst dafür entschieden haben, dieses Argument nicht zu verwenden, und dass es kein Fehler ist.
Das Windows SDK in WinNT.h definiert UNREFERENCED_PARAMETER()
zusammen mit DBG_UNREFERENCED_PARAMETER()
und DBG_UNREFERENCED_LOCAL_VARIABLE()
. Sie alle bewerten dasselbe, aber der Unterschied besteht darin, dass DBG_UNREFERENCED_PARAMETER() verwendet wird, wenn Sie beginnen und den Parameter zu verwenden, wenn der Code vollständiger ist. Wenn Sie sicher sind, dass Sie den Parameter nie verwenden werden, verwenden Sie die UNREFERENCED_PARAMETER() - Version.
Die Microsoft Foundation Classes (MFC) haben eine ähnliche Konvention mit den kürzeren UNUSED()
und UNUSED_ALWAYS()
Makros.
Wählen Sie einen Stil und bleiben Sie dabei. Auf diese Weise können Sie später in Ihrem Code nach "DBG_UNREFERENCED_PARAMETER
" suchen und nach Instanzen suchen, bei denen Sie ein Argument verwenden wollten, dies aber nicht taten. Indem Sie einen konsistenten Stil verwenden und ihn regelmäßig verwenden, erleichtern Sie es später für sich und andere.
Verwenden Sie boost :: ignore_unused (param) http://Stackoverflow.com/a/24310846/888576 –