경고 C26444

이름(es.84)이 없는 지역 변수를 선언하지 마세요.

C++ Core Guidelines

ES.84: 이름 없이 지역 변수를 선언하지 마세요(시도).

명명되지 않은 변수 선언은 문 끝에 카드 임시 개체를 만듭니다. 비기능적 동작이 있는 이러한 임시 개체는 리소스를 할당하고 즉시 throw하는 비효율적인 코드 또는 의도치 않게 비초적 데이터를 무시하는 코드를 가리킬 수 있습니다. 경우에 따라 명시적으로 잘못된 선언을 나타낼 수도 있습니다.

설명

  • 이 규칙은 손으로 쓴 소멸자 또는 손으로 쓴 소멸자를 전이적으로 호출하는 컴파일러 생성 소멸자가 있는 형식을 검색합니다.
  • 이 규칙은 RAII 형식의 사소한 생성자를 호출하는 코드에 플래그를 지정할 수 있습니다.
  • 논리는 상위 수준 식에서 사용되는 경우 임시를 건너뜁니다. 한 가지 예는 인수로 전달되거나 함수를 호출하는 데 사용되는 임시입니다.

코드 분석 이름: NO_UNNAMED_RAII_OBJECTS

예제

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).
}

이 문제를 해결하려면 임시 개체를 로컬로 변환합니다.

struct A { A(int i); ~A(); };
void Foo()
{
    A guard{42}; // OK.
}

참고 항목

C26441
ES.84: 이름 없이 지역 변수를 선언하지 마세요(시도).