본문 바로가기
C 언어/실무

C언어 내부 변수 / 전역 변수 / static 변수 사용 기준

by Autosar 2026. 4. 16.
반응형

C 언어에서 변수는 선언 위치와 키워드에 따라 동작 방식이 달라진다.

단순 문법 차이가 아니라 시스템 구조, 데이터 흐름, 디버깅 난이도까지 영향을 주는 설계 요소이다.

 

1. 지역 변수 (Local Variable)

 

지역 변수는 함수 내부에서 선언되고 해당 함수 안에서만 사용되는 변수이다.

함수 종료 시 메모리에서 사라지기 때문에 가장 기본적이고 안전한 형태이다.

 

사용 기준

- 함수 내부 임시 계산

- 중간 결과 저장

- 루프 제어 변수

- 외부와 상태 공유가 필요 없는 경우

 

특징

- 함수 호출 시 생성

- 함수 종료 시 소멸

- 외부 접근 불가

- 가장 예측 가능한 구조

 

실무 예시

void CalcSpeed(void)
{
    uint16 tempSpeed = 0U;
    tempSpeed = GetWheelSpeed() + 10U;
}

 

2. 전역 변수 (Global Variable)

 

전역 변수는 프로그램 전체 또는 여러 파일에서 접근 가능한 변수이다.

여러 모듈이 동일 데이터를 공유해야 할 때 사용된다.

 

사용 기준

- 여러 함수 또는 모듈에서 동일 데이터 공유

- ECU 상태 정보

- CAN 통신 데이터

- 시스템 상태 플래그

 

특징

- 프로그램 전체 생명주기 유지

- 접근 제한 없음

- 의존성 증가

- 디버깅 난이도 상승

 

실무 예시

uint8 g_IgnitionState;
uint16 g_VehicleSpeed;

 

전역 변수는 구조를 단순하게 만들지만, 시스템 복잡도를 증가시킨다.

AUTOSAR에서는 직접 접근보다는 RTE 또는 API 기반 접근 구조를 선호한다.

 

3. static 변수

 

static 변수는 선언 위치에 따라 의미가 완전히 달라진다.

 

(1) 함수 내부 static 변수 (상태 유지용)

함수 내부에서 선언되지만 함수 호출이 종료되어도 값이 유지되는 변수이다.

 

사용 기준

- 이전 상태 유지

- 상태 머신 구현

- debounce 처리

- 이벤트 카운트

- 필터링 로직

 

특징

- 함수 내부에서만 접근 가능

- 값 유지됨

- 초기화 1회 수행

 

실무 예시

void DebounceTask(void)
{
    static uint8 stableCnt = 0U;

    if (GetSignal() == 1U)
    {
        stableCnt++;
    }
}

 

이 함수가 상태를 기억해야 하는가”가 핵심 기준이다

 

(2) 파일 내부 static 변수 (모듈 캡슐화)

해당 .c 파일 내부에서만 접근 가능한 변수이다.

 

사용 기준

- 외부 접근 차단

- 모듈 내부 상태 관리

- 캡슐화 필요 데이터

 

특징

- 파일 외부 접근 불가

- 전역 변수보다 안전한 구조

- AUTOSAR 모듈 설계의 기본 형태

 

실무 예시

static uint16 g_InternalCounter;

 

외부에서 접근하면 안 되는 내부 상태”에 사용된다

 

변수 선택 기준 (실무 설계 관점)

 

변수 선택은 단순 조건이 아니라 데이터 구조 설계 문제이다.

실무에서는 아래 3가지 기준으로 결정한다.

 

1) 데이터 소유권 (Ownership)

특정 함수만 사용 → 지역 변수

특정 모듈 내부에서만 관리 → file static

시스템 전체 공유 → 전역 또는 인터페이스 구조
핵심: “이 데이터의 주인은 누구인가

 

2) 생명 주기 (Lifetime)

함수 실행 동안만 필요 → 지역 변수

호출 간 상태 유지 필요 → static (function static)

시스템 전체 유지 → 전역 또는 시스템 관리 구조

핵심: “언제 생성되고 언제 사라지는가

 

3) 접근 범위 (Visibility)

외부 접근 불필요 → 지역 / static

모듈 내부 제한 → file static

외부 접근 필요 → 전역 또는 API / RTE

핵심: “어디까지 노출할 것인가

 

정리

 

변수 종류 선택은 문법이 아니라 시스템 설계이다.

결국 핵심은 하나이다:

“이 데이터는 누가 소유하고, 얼마나 오래 유지되며, 어디까지 보여줄 것인가”

이 기준이 명확하면 변수 선택은 자연스럽게 결정된다.

반응형