수식어

수식어 (Modifiers)

Pascal에는 예약어는 아니지만, 특정 위치에서 컴파일러에게 특별한 의미를 갖는 수식어라는 것들이 있어요. 그리고 버전 2.5.1부터는 예약어를 & 기호로 이스케이프해서 식별자로 쓸 수도 있게 됐습니다.

출처: Free Pascal Reference — Modifiers

본문

수식어의 전체 목록은 다음과 같아요. 이들은 엄밀히 말해 예약어는 아니라서 식별자로 사용할 수 있지만, 특정 위치에서는 컴파일러가 이를 Pascal 언어의 일부로 간주해요.

absolute
abstract
alias
assembler
bitpacked
break
cdecl
continue
cppdecl
cvar
default
deprecated
dynamic
enumerator
experimental
export
external
far
far16
forward
generic
helper
implements
index
interrupt
iocheck
local
message
name
near
nodefault
noreturn
nostackframe
oldfpccall
otherwise
overload
override
pascal
platform
private
protected
public
published
read
register
reintroduce
result
safecall
saveregisters
softfloat
specialize
static
stdcall
stored
strict
unaligned
unimplemented
varargs
virtual
winapi
write

주의 Byte, Boolean 같은 미리 정의된 타입이나 maxint 같은 상수는 예약어가 아니에요. 이것들은 system 유닛에 선언된 식별자라서 다른 유닛에서 재정의할 수 있지만, 혼란을 많이 일으키므로 권장하지 않아요.

참고 버전 2.5.1부터는 & 기호로 이스케이프하면 예약어를 식별자로 사용할 수 있어요. 다음 코드가 가능하다는 뜻이에요.

var
  &var : integer;
begin
  &var:=1;
  Writeln(&var);
end.

하지만 새 코드에서는 이 기능을 쓰지 않는 게 좋아요. 코드가 덜 읽기 쉬워지거든요. 주로 예약어 목록이 바뀌면서 예전에는 예약어가 아니었던 단어가 예약어가 됐을 때, 기존 코드를 고치기 위한 용도로 설계된 거예요. (1.4 절, 47페이지도 함께 참고하세요.)

더 알아보기

  • 실제 예약어 목록은 "Turbo Pascal 예약어"와 "Object Pascal 예약어" 문서를 참고해요.
  • 전달 규약(cdecl, stdcall, safecall 등)과 가시성 지정자(private, public 등)의 구체적인 동작은 각 기능 문서에서 다뤄요.