오류 로그

expression must have a constant value C/C++(28)
error: initializer element is not constant
식에 상수 값이 있어야 합니다.

 

 

 

오류 코드

#include <stdio.h>

int a = 10;
int b = 20;
int arr[2] = {a, b};

int main()
{

}

 

 

오류 분석

전역 배열을 선언과 동시에 초기화할 때 상수가 아닌 변수값으로 초기화하면 위와 같은 오류가 발생한다.

따라서 아래와 같이 상수로 선언하면 오류가 발생하지 않는다.

#include <stdio.h>

int a = 10;
int b = 20;
int arr[2] = {10, 20};

int main()
{
	
}

 

그리고 아래와 같이 배열을 지역변수로 초기화할 때는 상수가 아닌 값도 사용할 수 있다.

#include <stdio.h>

int a = 10;
int b = 20;

int main()
{
    int arr[2] = {a, b};
}

 

위와 같이 전역변수와 지역변수일때의 차이가 발생하는 이유는 둘의  메모리 저장공간이 달라서 그 차이로 발생하는것 같으나 추측일 뿐 정확한 이유는 아직 찾지 못했다.