일반 상수
일반 상수 (Ordinary constants)
프로그램에서 값이 절대 바뀌지 않는 대상이라면 상수로 선언해 두는 게 편리해요. 이번 절에서는 Free Pascal의 기본적인 상수인 일반 상수(ordinary constant) 를 어떻게 선언하고, 어떤 규칙이 따라오는지 알아볼게요.
출처: 문서
본문
일반 상수 선언은 식별자 이름 다음에 = 기호를 붙이고, 그 뒤에 숫자·문자·불리언·열거값을 적절히 조합한 선택적 표현식이 따라오는 형태로 만들어져요.
컴파일러는 상수 선언 안의 표현식을 컴파일 시점에 평가할 수 있어야 해요. 즉 런타임 라이브러리의 대부분의 함수는 상수 선언에 쓸 수 없어요. 다만 +, -, *, /, not, and, or, div, mod, ord, chr, sizeof, pi, int, trunc, round, frac, odd 같은 연산자는 사용할 수 있어요.
코드에서 이미 선언된 일반 상수를 쓰면 컴파일러는 상수 이름 대신 실제 값을 넣어요. 예를 들어 다음 코드는:
Const
One = 1;
begin
Writeln(One);
end.
이렇게 상수 값을 직접 쓴 코드와 완전히 동일한 코드를 만들어요:
begin
Writeln(1);
end.
선언할 수 있는 상수의 타입은 다음과 같아요:
- 순서형(Ordinal) 타입
- 집합(Set) 타입
- 포인터 타입 — 단, 허용되는 값은
Nil뿐이에요. - 실수(Real) 타입
CharString
다음은 모두 유효한 상수 선언들이에요:
Const
e = 2.7182818; { Real type constant. }
a = 2; { Ordinal (Integer) type constant. }
c = '4'; { Character type constant. }
s = 'This is a constant string'; {String type constant.}
sc = chr(32)
ls = SizeOf(Longint);
P = Nil;
Ss = [1,2];
일반 상수에 값을 할당하는 것은 허용되지 않아요. 위 선언이 있다면 다음 코드는 컴파일 오류가 나요:
s := 'some other string';
문자열 상수의 타입은 일부 컴파일러 스위치에 따라 달라져요. 특정 타입을 원한다면 다음 절에서 설명하는 **형식 지정 상수(typed constant)**를 쓰면 돼요.
참고로 1.9 버전 이전의 Free Pascal은 64비트 상수를 제대로 지원하지 못했어요. 1.9 버전부터 64비트 상수를 지정할 수 있습니다.