이 오류는 변수나 배열, 구조체 등을 초기화할 때 문법적으로 잘못된 초기화 구문을 사용했을 때 발생합니다. C언어에서는 초기화 값이 선언된 타입과 일치해야 하며, 중괄호, 괄호, 대입 구문 등 모든 형식이 문법적으로 맞아야 컴파일이 가능합니다.
주로 초기화 형식 오류, 타입 불일치, 괄호 또는 중괄호 누락 등에서 자주 발생합니다.
● 오류 예제
#include <stdio.h>
int main() {
int a = {1, 2}; // 오류: 정수는 단일 값만 초기화 가능
return 0;
}
위 코드는 변수 a에 여러 값을 초기화하려 했기 때문에 컴파일러는 다음과 같은 오류를 발생시킵니다.
error: invalid initializer
● 해결 방법
변수의 타입과 초기화 값이 일치해야 하며, 단일 변수에는 단일 값만, 배열에는 중괄호를 사용한 다중 값 초기화를 적용해야 합니다.
int main() {
int a = 1; // 올바른 초기화
int arr[2] = {1, 2}; // 배열은 중괄호로 초기화
return 0;
}
출력은 없지만, 위 코드는 컴파일 오류 없이 정상 실행됩니다.
● 실전 팁
- 변수 초기화 시 타입에 맞는 형식으로 작성해야 합니다.
- 스칼라 타입(int, char 등)은 단일 값으로만 초기화 가능합니다.
- 배열이나 구조체 초기화는 중괄호 형식을 올바르게 사용해야 합니다.
초기화는 변수 선언 시 중요한 부분으로, 문법적인 형식을 준수하지 않으면 컴파일 오류가 발생합니다. 자료형에 맞는 올바른 초기화 형식을 사용하는 습관을 들이세요.