Ostrzeżenie C26444
Nie próbuj zadeklarować zmiennej lokalnej bez nazwy (es.84).
Podstawowe wytyczne dotyczące języka C++
ES.84: Nie (spróbuj) zadeklarować zmiennej lokalnej bez nazwy
Nienazwana deklaracja zmiennej tworzy obiekt tymczasowy, który jest odrzucany na końcu instrukcji. Takie obiekty tymczasowe z nietrywialnym zachowaniem mogą wskazywać na nieefektywny kod, który przydziela i natychmiast odrzuca zasoby lub kod, który przypadkowo ignoruje dane nieuprzywzględne. Czasami może również wskazywać wyraźnie nieprawidłową deklarację.
Uwagi
- Ta reguła wykrywa typy za pomocą ręcznie napisanego destruktora lub destruktora generowanego przez kompilator, który przechodnio wywołuje ręcznie napisany destruktor.
- Ta reguła może flagować kod, który wywołuje nietriwialny konstruktor typu RAII.
- Logika pomija czasowo, jeśli są używane w wyrażeniach wyższego poziomu. Jednym z przykładów są tymczasowe, które są przekazywane jako argumenty lub używane do wywoływania funkcji.
Nazwa analizy kodu: NO_UNNAMED_RAII_OBJECTS
Przykłady
struct A { A(int i); ~A(); };
void Foo()
{
A{42}; // warning C26444: Don't try to declare a local variable with no name (es.84).
}
Aby rozwiązać ten problem, przekonwertuj obiekt tymczasowy na lokalny.
struct A { A(int i); ~A(); };
void Foo()
{
A guard{42}; // OK.
}
Zobacz też
C26441
ES.84: Nie (spróbuj) zadeklarować zmiennej lokalnej bez nazwy
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla