전역 변수 (G)

G 키워드는 정적 저장 기간(static storage duration)을 가지는 전역 변수를 선언합니다.

기본 문법

G name: Type = value

전역 변수는 프로그램 전체에서 접근 가능하며, 프로그램 시작부터 종료까지 존재합니다.

예제

단순 전역 변수

G counter: i64 = 0
G max_size: i64 = 1024
G pi: f64 = 3.14159265358979

F main() -> i64 {
    puts("max_size:")
    print_i64(max_size)
    0
}

가변 전역 변수

전역 변수는 기본적으로 가변(mutable)입니다:

G total: i64 = 0

F add_to_total(n: i64) -> i64 {
    total = total + n
    total
}

F main() -> i64 {
    add_to_total(10)
    add_to_total(20)
    add_to_total(30)
    total   # 60
}

공개 전역 변수

P 키워드와 함께 사용하면 다른 모듈에서 접근 가능합니다:

P G VERSION: i64 = 1
P G DEBUG_MODE: bool = false

타입 지정

전역 변수는 반드시 타입을 명시해야 합니다:

G count: i64 = 0       # i64 타입
G ratio: f64 = 0.5     # f64 타입
G flag: bool = true     # bool 타입

스코프 규칙

  • 전역 변수는 선언 이후 모든 함수에서 접근 가능합니다.
  • 같은 이름의 지역 변수가 있으면 지역 변수가 우선합니다 (shadowing).
  • 모듈 간 공유는 P G (public global)로 선언해야 합니다.

주의사항

  • 전역 변수의 초기값은 컴파일 타임에 평가 가능한 상수여야 합니다.
  • 전역 변수의 과도한 사용은 코드의 추론을 어렵게 만듭니다. 가능하면 함수 파라미터를 통한 명시적 전달을 권장합니다.
  • 멀티스레드 환경에서 전역 변수 접근은 동기화가 필요합니다.