[[noreturn]]

4130 단어 C++tech
[noreturn]은 함수가 절대 되돌아오지 않는 속성을 나타낸다.
용도
  • 컴파일러의 최적화
  • return 문장의 생략
  • "return문의 생략"의 뜻.예외 처리라고 쓰여 있는데 되돌아오는 값이 없으면 컴파일러에게 욕을 먹습니다. 의미 없는 되돌아오는 값이 추가된 적이 있습니까?
    void throw_error()
    {
      throw std::runtime_error("error~~~");;
    }
    
    int func()
    {
      int ret = /*何か処理*/
      if (ret > -1) {
        return 1;
      }
      
      // 例外投げるだけだからreturnは不要
      throw_error();
      
      // だけどコンパイラに怒られるためreturn追加
      return -1;
    }
    
    이럴 때 [noreturn]을 사용하면 컴파일러의 경고를 멈출 수 있습니다.리턴을 되돌려주지 않을 때 사용하기 때문에 예외적인throw 함수만 만들 때 사용할 수 있습니다.
    [[noreturn]] void throw_error()
    {
      throw std::runtime_error("error~~~");;
    }
    
    int func()
    {
      int ret = /*何か処理*/
      if (ret > -1) {
        return 1;
      }
      
      // コンパイラもreturnがないことを知っているため怒らない
      throw_error();
    }
    

    좋은 웹페이지 즐겨찾기