Namensräume
Varianten
Aktionen

C++ Attribut: maybe_unused (seit C++17)

Von cppreference.com
< cpp‎ | language‎ | attributes
 
 
C++ Sprache
Allgemeine Themen
Kontrollfluss
Bedingte Ausführungsaussagen
if
Iterationsanweisungen (Schleifen)
for
Bereichs-for (C++11)
Sprunganweisungen
Funktionen
Funktionsdeklaration
Lambda-Funktionsausdruck
inline-Spezifizierer
Dynamische Ausnahmespezifikationen (bis C++17*)
noexcept-Spezifizierer (C++11)
Ausnahmen
Namensräume
Typen
Spezifizierer
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Speicherdauer-Spezifizierer
Initialisierung
Ausdrücke
Alternative Darstellungen
Literale
Boolesch - Ganzzahl - Gleitkommazahl
Zeichen - String - nullptr (C++11)
Benutzerdefinierte (C++11)
Dienstprogramme
Attribute (C++11)
Typen
typedef-Deklaration
Typalias-Deklaration (C++11)
Umwandlungen
Speicherzuweisung
Klassen
Klassenspezifische Funktionseigenschaften
explicit (C++11)
static

Spezielle Member-Funktionen
Templates
Sonstiges
 
 
Attribute
(C++23)
(C++11)(bis C++26)
(C++14)
(C++20)
maybe_unused
(C++17)
(C++17)
(C++11)
(C++20)
 

Unterdrückt Warnungen bei ungenutzten Entitäten.

Inhalt

[bearbeiten] Syntax

[[maybe_unused]]

[bearbeiten] Erklärung

Dieses Attribut kann in der Deklaration der folgenden Entitäten erscheinen:

(seit C++26)

Bei Entitäten, die mit [[maybe_unused]] deklariert werden, wird die vom Compiler ausgegebene Warnung bezüglich ungenutzter Entitäten oder deren strukturierter Bindungen unterdrückt, falls diese nicht genutzt werden.

Bei Labels, die mit [[maybe_unused]] deklariert werden, wird die vom Compiler ausgegebene Warnung bezüglich ungenutzter Labels unterdrückt, falls diese nicht genutzt werden.

(seit C++26)

[bearbeiten] Beispiel

#include <cassert>
 
[[maybe_unused]] void f([[maybe_unused]] bool thing1,
                        [[maybe_unused]] bool thing2)
{
    [[maybe_unused]] lbl: // the label “lbl” is not used, no warning
    [[maybe_unused]] bool b = not false and not true;
    assert(b); // in release mode, assert is compiled out, and “b” is unused
               // no warning because it is declared [[maybe_unused]]
} // parameters “thing1” and “thing2” are not used, no warning
 
int main() {}

[bearbeiten] Defect reports

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
CWG 2360 C++17 could not apply [[maybe_unused]] to structured bindings erlaubt

[bearbeiten] Referenzen

  • C++23 Standard (ISO/IEC 14882:2024)
  • 9.12.8 Maybe unused attribute [dcl.attr.unused]
  • C++20 Standard (ISO/IEC 14882:2020)
  • 9.12.7 Maybe unused attribute [dcl.attr.unused]
  • C++17 Standard (ISO/IEC 14882:2017)
  • 10.6.6 Maybe unused attribute [dcl.attr.unused]

[bearbeiten] Siehe auch

C-Dokumentation für maybe_unused