728x90
이 오류는 이미 선언된 typedef
이름을 동일한 이름으로 다시 정의하려 할 때 발생합니다. C언어에서는 하나의 typedef
이름에 대해 여러 번 타입을 정의할 수 없으며, 기존과 동일한 이름을 또다시 사용하려 하면 컴파일러는 이를 중복 정의로 간주하여 오류를 발생시킵니다.
주로 헤더 파일을 여러 번 포함했거나, include guard 또는 #pragma once
가 누락된 경우 자주 발생합니다.
● 오류 예제
typedef int myInt;
typedef float myInt; // 오류: 같은 이름으로 재정의
컴파일 시 다음과 같은 오류 메시지를 출력합니다.
error: typedef redefined
● 해결 방법
typedef
이름을 중복해서 사용하지 말고, 이름이 충돌하지 않도록 고유한 이름을 지정하거나, 헤더 파일에 포함 방지 매크로를 추가해야 합니다.
#ifndef MYTYPES_H
#define MYTYPES_H
typedef int myInt;
#endif
또는 다음처럼 이름을 달리 지정하여 충돌을 방지할 수 있습니다.
typedef int myInt;
typedef float myFloat;
● 실전 팁
typedef
는 동일한 이름으로 여러 번 정의할 수 없습니다.- 헤더 파일에는 include guard 또는
#pragma once
를 반드시 사용하세요. - 타입 이름 충돌을 피하기 위해 접두사나 네임스페이스 스타일의 네이밍을 고려하세요.
C언어에서는 타입 이름의 중복이 치명적인 오류로 이어질 수 있으므로, typedef 정의는 항상 고유하게 관리해야 하며, 헤더 보호 매크로로 재정의를 방지하는 습관을 들이는 것이 좋습니다.
728x90