_Noreturn function specifier (since C11) (deprecated in C23)
함수가 호출 지점으로 반환되지 않음을 지정합니다.
목차 |
구문
| _Noreturn function_declaration | (C11부터) (C23에서 사용 중단됨) | ||||||||
설명
_Noreturn
키워드는 함수 선언에 나타나며, 해당 함수가 return 문을 실행하거나 함수 본문의 끝에 도달하여 반환되지 않음을 지정합니다(
longjmp
를 실행하여 반환될 수 있음).
_Noreturn
으로 선언된 함수가 반환할 경우, 그 동작은 정의되지 않습니다. 이를 감지할 수 있다면 컴파일러 진단이 권장됩니다.
_Noreturn
지정자는 동일한 함수 선언에서 여러 번 나타날 수 있으며, 한 번 나타난 것과 동일하게 동작합니다.
이 지정자는 일반적으로 헤더 파일
<stdnoreturn.h>
에 제공되는 편의 매크로
noreturn
를 통해 사용됩니다.
|
매크로
|
(C23 이후) |
키워드
표준 라이브러리
표준 라이브러리에서 다음 함수들은
noreturn
입니다:
태그 내의 C++ 함수명은 번역하지 않고 원본을 유지했습니다. 웹페이지의 실제 텍스트 내용이 함수명 외에 별도의 설명 텍스트가 없으므로, 번역할 내용이 없습니다.
예제
#include <stdio.h> #include <stdlib.h> #include <stdnoreturn.h> // i <= 0일 경우 정의되지 않은 동작을 발생시킴 // i > 0일 경우 종료됨 noreturn void exit_now(int i) // or _Noreturn void exit_now(int i) { if (i > 0) exit(i); } int main(void) { puts("Preparing to exit..."); exit_now(2); puts("This code is never executed."); }
출력:
Preparing to exit...
참고문헌
- C23 표준 (ISO/IEC 9899:2024):
-
- 6.7.4 함수 지정자 (p: TBD)
-
- 7.23 _Noreturn <stdnoreturn.h> (p: TBD)
- C17 표준 (ISO/IEC 9899:2018):
-
- 6.7.4 함수 지정자 (p: 90-91)
-
- 7.23 _Noreturn <stdnoreturn.h> (p: 263)
- C11 표준 (ISO/IEC 9899:2011):
-
- 6.7.4 함수 지정자 (p: 125-127)
-
- 7.23 _Noreturn <stdnoreturn.h> (p: 361)
참고 항목
|
함수가 반환하지 않음을 나타냅니다
(속성 지정자) |
|
|
C++ 문서
for
[[noreturn]]
|
|