프로그래밍언어/C언어[Error]
[C언어][Error] 007. redefinition or redeclaration of variable/parameter/struct member – 변수나 파라미터를 중복 선언했을 때
about_IT
2025. 4. 22. 23:27
이 오류는 같은 이름의 변수, 함수 매개변수, 구조체 멤버 등을 동일한 범위(scope) 내에서 중복 선언하거나 정의했을 때 발생합니다. C언어는 동일한 이름의 식별자를 같은 블록 안에서 두 번 이상 선언하는 것을 허용하지 않습니다.
변수를 실수로 두 번 선언하거나, 구조체 안에서 같은 이름의 멤버를 중복 선언할 경우 컴파일러는 '재정의(redefinition)' 또는 '재선언(redeclaration)' 오류를 발생시킵니다.
다음은 오류가 발생하는 예시입니다.
#include <stdio.h>
int main() {
int a = 10;
int a = 20; // 동일한 변수 이름을 다시 선언
printf("%d\n", a);
return 0;
}
컴파일 시 다음과 같은 오류 메시지가 출력됩니다.
error: redefinition of ‘a’
아래는 중복 선언을 제거하여 수정한 코드입니다.
#include <stdio.h>
int main() {
int a = 10;
a = 20; // 값만 변경
printf("%d\n", a);
return 0;
}
출력 결과는 다음과 같습니다.
20
● 실전 팁
- 같은 이름의 변수를 같은 블록 안에서 두 번 선언하지 마세요.
- 구조체를 설계할 때는 멤버 이름이 중복되지 않도록 주의하세요.
- 헤더 파일을 여러 파일에서 include할 때는 include guard 또는 #pragma once를 사용해 중복 선언을 방지하세요.
재선언 오류는 실수로 선언부를 반복했을 때 자주 발생하므로, 변수 선언 시 선언 위치와 유효 범위를 항상 명확히 인지하고 있어야 합니다.