noreturn 함수 수식자

noreturn 함수 수식자

프로시저가 결코 반환하지 않는다는 사실을 컴파일러에 알려주는 수식자가 noreturn이에요. 덕분에 초기화되지 않은 변수나 결과값 미설정에 대한 경고를 줄일 수 있어요.

출처: Free Pascal Reference 14.9.13 noreturn

본문

noreturn 수식자는 프로시저가 반환하지 않는다(never returns) 는 사실을 컴파일러에 알려줄 때 사용해요. 이 정보를 바탕으로 컴파일러는 초기화되지 않은 변수나 결과가 설정되지 않았다는 경고를 내지 않을 수 있어요.

아래 예시를 볼까요. 컴파일러는 함수 f에서 결과가 설정되지 않을 수 있다는 경고를 내지 않아요.

procedure do_halt; noreturn;
begin
  halt(1);
end;

function f(i : integer) : integer ;
begin
  if (i<0)  then
    do_halt
  else
    result:=i;
end;

do_haltnoreturn으로 선언되어 있으니, i<0인 경로에서는 함수가 반환되지 않는다는 걸 컴파일러가 알 수 있어요. 그래서 result가 항상 설정된다고 판단하고 관련 경고를 생략해주는 거예요.

더 알아보기

  • Free Pascal Reference의 프로시저·함수 수식자 섹션
  • 컴파일러 경고 제어와 halt 프로시저