본문 바로가기
Language/C

[C] typedef struct와 타입 전방 선언으로 인한 C2371 오류

by 어발 2023. 1. 3.
// Error.h

#pragma once

struct Test;

class Error {
public:
  void Callfunction (Test& ref); 
};

// Test.h

typedef struct _Test {
  int a;
} Test; // Error C2371 

/* 혹은 이름을 생략하고 선언한 경우
typedef struct {
  int a;
} Test;
*/

위와 같이 Error.h에서 구조체 Test를 전방선언하고 Test.h에서 Test를 정의하는 경우 C2371오류가 발생한다.

해결방법

1. 태그명과 타입명을 동일하게 정의

// Test.h

typedef struct Test {
  int a;
} Test;

2. typedef를 사용하지 않고 구조체 정의

// Test.h

struct Test {
  int a;
};
728x90

댓글