Mich würde interessieren, ob es schon jemand benutzt hat,
Ja, aber wie Sie an vielen Beispielen in dieser Frage und Antwort sehen können, __LINE__
die genormt ist, würde in den meisten Fällen ebenfalls ausreichen.
__COUNTER__
ist nur in den Fällen wirklich notwendig, in denen die Zählung jedes Mal um eins erhöht werden muss, oder sie muss über mehrere #include
Dateien.
und ob es sich lohnen würde, sie zu standardisieren?
__COUNTER__
im Gegensatz zu __LINE__
ist sehr gefährlich, weil es davon abhängt, welche Header-Dateien in welcher Reihenfolge eingebunden werden. Wenn zwei .cpp
Dateien (Übersetzungseinheiten) enthalten eine Header-Datei, die __COUNTER__
aber die Header-Datei erhält unterschiedliche Zählsequenzen in den verschiedenen Instanzen, können sie unterschiedliche Definitionen der gleichen Sache verwenden und verletzen die Ein-Definitions-Regel.
Verstöße gegen Regeln mit einer Definition sind sehr schwer zu erkennen und können zu Fehlern und Sicherheitsrisiken führen. Die wenigen Anwendungsfälle von __COUNTER__
wiegen die Nachteile und die mangelnde Skalierbarkeit nicht wirklich auf.
Selbst wenn Sie niemals Code ausliefern, der __COUNTER__
Bei der Erstellung eines Prototyps für eine Aufzählungssequenz kann dies nützlich sein, da es Ihnen die Mühe erspart, Namen zuzuweisen, bevor die Mitgliedschaft konkret ist.