전역 변수
FunC 프로그램은 기본적으로 함수 선언/정의와 전역 변수 선언의 목록입니다. 이 섹션에서는 두 번째 주제를 다룹니다.
전역 변수는 변수 유형과 변수 이름 뒤에 글로벌
키워드를 사용하여 선언할 수 있습니다. 예를 들어
global ((int, int) -> int) op;
int check_assoc(int a, int b, int c) {
return op(op(a, b), c) == op(a, op(b, c));
}
int main() {
op = _+_;
return check_assoc(2, 3, 9);
}
는 전역 함수 변수 op
에 덧셈 연산자 _+_
를 쓰고 2, 3, 9라는 세 개의 샘플 정수에 대해 덧셈의 연관성을 확인하는 간단한 프로그램입니다.
내부적으로 글로벌 변수는 TVM의 c7 제어 레지스터에 저장됩니다.
전역 변수의 유형은 생략할 수 있습니다. 이 경우 변수의 용도에서 유추할 수 있습니다. 예를 들어 다음과 같이 프로그램을 다시 작성할 수 있습니다:
global op;
int check_assoc(int a, int b, int c) {
return op(op(a, b), c) == op(a, op(b, c));
}
int main() {
op = _+_;
return check_assoc(2, 3, 9);
}
동일한 글로벌
키워드 뒤에 여러 변수를 선언할 수 있습니다. 다음 코드가 이에 해당합니다:
global int A;
global cell B;
global C;
global int A, cell B, C;
이미 선언된 전역 변수와 같은 이름의 지역 변수를 선언하는 것은 허용되지 않습니다. 예를 들어 이 코드는 컴파일되지 않습니다:
global cell C;
int main() {
int C = 3;
return C;
}
다음 코드가 올바른지 확인하세요:
global int C;
int main() {
int C = 3;
return C;
}
하지만 여기서 int C = 3;
은 C = 3;
과 동일하며, 즉 로컬 변수 C
의 선언이 아니라 전역 변수 C
에 대한 할당입니다(이 효과에 대한 설명은 statements에서 찾을 수 있습니다).