728x90
이 오류는 C언어에서 배열이나 구조체 등을 초기화할 때, 중괄호를 사용하지만 내부에 아무 값도 넣지 않은 경우 발생합니다. ISO C 표준에서는 빈 중괄호 {}
를 사용한 초기화를 허용하지 않으며, 컴파일러는 이를 문법 오류로 인식합니다.
이는 일반적으로 값을 초기화하지 않고 단순히 선언하려 할 때 발생하며, 중괄호 대신 명시적 0값 또는 생략된 형식을 사용하는 방식으로 해결할 수 있습니다.
● 오류 예제
int arr[3] = {}; // 오류: 빈 중괄호 초기화는 ISO C에서 금지됨
컴파일러는 다음과 같은 오류 메시지를 출력합니다.
error: ISO C forbids empty initializer braces
● 해결 방법
빈 중괄호 대신 {0}으로 명시적 초기값을 넣거나, 단순 선언 후에 값을 대입하는 방식으로 처리합니다.
#include <stdio.h>
int main() {
int arr[3] = {0}; // 모든 원소가 0으로 초기화됨
for (int i = 0; i < 3; i++) {
printf("%d ", arr[i]);
}
return 0;
}
출력 결과:
0 0 0
● 실전 팁
- 빈 중괄호는 ISO C 표준에서 허용되지 않으므로 반드시 최소한 하나의 초기값을 포함하세요.
{0}
는 모든 값을 0으로 초기화하는 일반적인 안전한 방법입니다.- 초기화 없이 선언만 하고 싶다면 대입 없이 단순 선언하세요.
C언어는 명확한 초기화를 요구하기 때문에 빈 중괄호 초기화는 금지됩니다. 명시적으로 0으로 초기화하거나 초기화를 생략하는 방식으로 코드를 구성하는 것이 바람직합니다.
728x90