[[vielleicht_unused]] im Enumerator

8

Betrachtet man die Spezifikation des [[maybe_unused]] , heißt es:

  

Wird in der Deklaration einer Klasse, eines typedef, einer Variablen, eines nicht statischen Datenelements, einer Funktion, einer Enumeration oder eines Enumerators angezeigt. Wenn der Compiler Warnungen für nicht verwendete Entitäten ausgibt, wird diese Warnung für alle Entitäten unterdrückt, die als may_unused deklariert sind.

Da dies den Enumerator erwähnt, erwarte ich, dass es einen Anwendungsfall hat. Als einzige Sache konnte ich die -Wswitch Warnung herausbringen, ich habe es mit Clang, GCC und MSVC versucht.

%Vor%

Alle 3 Compiler geben mir eine Variation der folgenden Warnung:

%Vor%

Live-Code

Ist dies ein gültiger Anwendungsfall für die Verwendung dieses Attributs, gibt es andere Anwendungsfälle zum Hinzufügen des Attributs an dieser Stelle oder ist dies nur eine sinnlose Ergänzung?

    
JVApen 28.01.2018, 16:35
quelle

1 Antwort

5

Die Absicht dieses Attributs besteht darin, zu erklären, dass eine Entität niemals verwendet sein könnte, und wenn dies der Fall ist, sollte die Implementierung Sie nicht daran erinnern, dass Sie das irgendwo zum Beispiel tun könnten sei mit eine falsche Entität.

switch -Anweisungen sind eine völlig andere Sache überhaupt: nicht Handhabung ein Enumerator ist problematisch, selbst wenn der Enumerator in dieser TU nie verwendet wird; Es weist auf eine logische Lücke in Ihrem Programm hin. Was ist, wenn diese Funktion eine externe Verknüpfung hat und jemand anderes sie mit diesem Enumerator aufruft?

Kurz gesagt, selbst in TUs, in denen wir einen Enumerator als potenziell unbenutzt markiert haben (was sich sinnlos anfühlt, weil sie im Namespace-Bereich oft vorkommen), ist es immer noch sehr gut, sie in Ihrer Programmlogik zu behandeln (und Clang hat recht Ich gebe Ihnen diesen Rat).

    
Columbo 28.01.2018 17:05
quelle