프로그래밍언어/C언어[Error]

[C언어][Error] 069. assignment of read-only variable – 상수 변수에 값을 대입함

about_IT 2025. 4. 29. 00:29
728x90

이 오류는 const로 선언된 읽기 전용 변수에 값을 다시 대입하려고 할 때 발생합니다. C언어에서 const 키워드는 변수의 값을 변경할 수 없도록 선언하며, 컴파일 타임에 이 속성이 적용되어 해당 변수에 쓰기 작업을 할 경우 컴파일 오류가 발생합니다.


이 오류는 실수로 값을 바꾸려 하거나, 함수 내부에서 const 매개변수를 변경하려 할 때 자주 발생합니다.



● 오류 예제

#include <stdio.h>

int main() {
    const int x = 10;
    x = 20;  // 오류: const 변수에 대입 불가
    return 0;
}

컴파일 시 다음과 같은 오류 메시지를 출력합니다.

error: assignment of read-only variable ‘x’


● 해결 방법

값을 변경해야 하는 경우에는 const를 사용하지 않고 선언하거나, 변경이 필요 없는 경우라면 해당 코드를 제거해야 합니다.

#include <stdio.h>

int main() {
    int x = 10;  // const 제거
    x = 20;
    printf("%d\n", x);
    return 0;
}

출력 결과:

20


● 실전 팁

  • const는 읽기 전용이며, 선언된 변수에 값을 다시 할당할 수 없습니다.
  • 변경이 필요하다면 const를 제거하거나, 새로운 변수를 사용해야 합니다.
  • 특히 함수 매개변수로 const를 사용할 때는 의도된 읽기 전용 속성을 유지하세요.

코드의 안전성과 명확성을 위해 const는 매우 유용하지만, 잘못 사용하면 불필요한 오류를 유발할 수 있습니다. const의 의미를 정확히 이해하고 변수에 알맞게 사용하는 습관이 중요합니다.

728x90