"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > STL이나 Boost 라이브러리에 의존하지 않고 C++에서 \"지연\" 기능을 어떻게 구현할 수 있습니까?

STL이나 Boost 라이브러리에 의존하지 않고 C++에서 \"지연\" 기능을 어떻게 구현할 수 있습니까?

2025-01-27에 게시됨
검색:179

How can you implement a \ () #endif // DEFER

사용법 :

DEFER 매크로는 해당 스코프가 끝날 때 실행될 코드 블록을 정의하는 데 특정 범위 내에서 사용될 수 있습니다. 구문은 다음과 같습니다.
#ifndef defer
struct defer_dummy {};
template  struct deferrer { F f; ~deferrer() { f(); } };
template  deferrer operator*(defer_dummy, F f) { return {f}; }
#define DEFER_(LINE) zz_defer##LINE
#define DEFER(LINE) DEFER_(LINE)
#define defer auto DEFER(__LINE__) = defer_dummy{} *[&]()
#endif // defer
연기 { // 현재 범위의 끝에서 실행될 코드 };

예 :

다음 예제에서 DEFER 매크로는 read_entire_file 함수 내에서 사용됩니다.
defer {
    // Code to be executed at the end of the current scope
};

구문 적으로 간결하게 간결합니다. 구문은 읽기 쉽게 읽고 사용하기 쉽도록 설계되었습니다. 컴파일 시간.

Flexible :
 DEFER 블록에는 유효한 C 문 또는 표현이 포함될 수 있습니다. &&)
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3