프로그래밍언어/C언어[Error]
[C언어][Error] 054. invalid use of array with unspecified bounds – 배열 크기 미지정 사용 오류
about_IT
2025. 4. 28. 00:13
이 오류는 배열을 선언할 때 크기를 명시하지 않거나 초기화 없이 사용하려 할 때 발생합니다. C언어에서 배열의 크기를 명시하지 않고 선언하는 경우, 반드시 초기화 리스트를 함께 제공해야만 크기를 유추할 수 있습니다. 그렇지 않으면 컴파일러는 배열의 크기를 알 수 없어 오류를 발생시킵니다.
특히 전역 변수나 정적 영역에서 배열 크기를 명시하지 않고 선언하는 경우, 초기화가 없다면 컴파일 오류로 이어집니다.
● 오류 예제
#include <stdio.h>
int arr[]; // 오류: 크기와 초기화 모두 없음
int main() {
arr[0] = 10;
return 0;
}
컴파일 시 다음과 같은 오류가 발생합니다.
error: invalid use of array with unspecified bounds
● 해결 방법
배열 선언 시에는 크기를 명시하거나, 크기를 생략하려면 반드시 초기화를 통해 크기를 유추할 수 있어야 합니다.
#include <stdio.h>
int arr[] = {1, 2, 3}; // 초기화를 통해 크기 유추 가능
int main() {
printf("%d\n", arr[0]);
return 0;
}
출력 결과:
1
● 실전 팁
- 크기를 명시하지 않은 배열은 반드시 초기화가 필요합니다.
- 초기화 없이 선언해야 할 경우에는 배열의 크기를 명시해야 합니다.
- 특히 전역이나 정적 영역에서 초기화가 없으면 컴파일 오류가 발생하므로 주의하세요.
C언어는 배열의 크기를 반드시 알고 있어야 메모리를 할당할 수 있으므로, 크기 생략 시 초기화로 반드시 배열 크기를 결정하도록 작성해야 합니다.