C++ attribute: maybe_unused (since C++17)
Unterdrückt Warnungen zu nicht verwendeten Entitäten.
Inhaltsverzeichnis |
Syntax
[
[
maybe_unused
]
]
|
|||||||||
Erklärung
Dieses Attribut kann in der Deklaration der folgenden Entitäten erscheinen:
- Klasse : struct [ [ maybe_unused ] ] S ;
- typedef , einschließlich der durch Alias-Deklaration deklarierten: [ [ maybe_unused ] ] typedef S * PS ; , using PS [ [ maybe_unused ] ] = S * ;
- Variable, einschließlich statischer Datenelemente : [ [ maybe_unused ] ] int x ;
- Nicht-statische Datenelemente : union U { [ [ maybe_unused ] ] int n ; } ; ,
- Funktion : [ [ maybe_unused ] ] void f ( ) ;
- Enumeration : enum [ [ maybe_unused ] ] E { } ;
- Enumerator: enum { A [ [ maybe_unused ] ] , B [ [ maybe_unused ] ] = 42 } ;
- Strukturierte Bindung : [ [ maybe_unused ] ] auto [ a, b ] = std:: make_pair ( 42 , 0.23 ) ;
|
(seit C++26) |
Für Entitäten, die mit [ [ maybe_unused ] ] deklariert werden, wird die Warnung zu ungenutzten Entitäten, die vom Compiler ausgegeben wird, unterdrückt, falls die Entitäten oder ihre strukturierten Bindungen ungenutzt bleiben.
|
Für deklarierte Labels [ [ maybe_unused ] ] wird, falls sie ungenutzt sind, die Compiler-Warnung über ungenutzte Labels unterdrückt. |
(since C++26) |
Beispiel
#include <cassert> [[maybe_unused]] void f([[maybe_unused]] bool thing1, [[maybe_unused]] bool thing2) { [[maybe_unused]] lbl: // die Marke „lbl“ wird nicht verwendet, keine Warnung [[maybe_unused]] bool b = not false and not true; assert(b); // im Release-Modus wird assert entfernt und „b“ ungenutzt // keine Warnung, da es als [[maybe_unused]] deklariert ist } // Parameter „thing1“ und „thing2“ werden nicht verwendet, keine Warnung int main() {}
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| CWG 2360 | C++17 | konnte [ [ maybe_unused ] ] nicht auf strukturierte Bindungen anwenden | erlaubt |
Referenzen
- C++23-Standard (ISO/IEC 14882:2024):
-
- 9.12.8 Maybe-unused-Attribut [dcl.attr.unused]
- C++20-Standard (ISO/IEC 14882:2020):
-
- 9.12.7 Maybe-unused-Attribut [dcl.attr.unused]
- C++17-Standard (ISO/IEC 14882:2017):
-
- 10.6.6 Vielleicht unbenutztes Attribut [dcl.attr.unused]
Siehe auch
|
C-Dokumentation
für
maybe_unused
|