본문 바로가기
프로그래밍언어/C언어[Error]

[C언어][Error] 052. invalid initializer – 초기화 구문 오류

by about_IT 2025. 4. 28.

이 오류는 변수나 배열, 구조체 등을 초기화할 때 문법적으로 잘못된 초기화 구문을 사용했을 때 발생합니다. 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 등)은 단일 값으로만 초기화 가능합니다.
  • 배열이나 구조체 초기화는 중괄호 형식을 올바르게 사용해야 합니다.

초기화는 변수 선언 시 중요한 부분으로, 문법적인 형식을 준수하지 않으면 컴파일 오류가 발생합니다. 자료형에 맞는 올바른 초기화 형식을 사용하는 습관을 들이세요.