본문 바로가기

Study/C++

error C2143: 구문 오류 : ';'이(가) '*' 앞에 없습니다.

아무리 코드를 봐도 원인을 못 찾던 오류다.

구글링해봤지만 구글링해도 답이 안 나오던 오류

스스로 답을 찾았다.

 

해결법 1. #paragma once

 

헤더 선언 시, 여러번 중복되어 include되면 오류가 발생할 수 있다.

맨 첫줄에 #pragma once를 넣어 한 번만 include하도록 고쳐 주자.

 

 

 

해결법 2. 클래스 간 include관계 수정

 

내 문제는 이거였다. 해결법 1을 써도 안 되던 경우. 클래스 간의 관계를 확인해보자.

아래 코드를 보면 Store클래스와 NPC클래스가 서로 include하고 있다. 바로 이 때문에 오류가 났던 것!

Store를 컴파일하려면 NPC가 필요하고, NPC를 컴파일하려면 Store가 필요하고, 그럼 또 Store에서는 NPC가 필요하고..

`Store.h`의 #include "NPC.h"를 지워줬더니 해결됐다.

양쪽이 서로서로 include하는 일이 없도록 하자!

1
2
3
4
5
6
7
8
9
10
11
12
//Store.h
#pragma once
#include "NPC.h"
class Store{//Store 정의
};
 
 
// NPC.h
#pragma once
#include "Store.h"
class NPC {//NPC 선언
};
 

 

 

 


//Store.h
#pragma once
#include "NPC.h"
class Store{//Store 정의
};


// NPC.h
#pragma once
#include "Store.h"
class NPC {//NPC 선언
};

 

ㅠㅠ 코드블럭 안 이뻐