2015年3月7日土曜日

エラー error C2146: 構文エラー についての考察

ゲームを作っているときにこのようなエラーが発生しました。

error C2146: 構文エラー : ';' が、識別子 'ch' の前に必要です。
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません


C++の文法事項に問題ないと思いきや…あったんですねー RouterMan様の記事に書かれてました。

http://routermanblog.blogspot.jp/2013/09/error-c2146-xxx.html


エラー前は

chara.h----------------------

#include "define.h"
#include <list>

RTS.h-----------------------

#include "chara.h"
#include "map.h"
#include <list>

chara.cpp--------------------
#include "chara.h"
#include <time.h>
#include <stdlib.h>


エラー改善後(char.h の #include "define.h"を削除)

chara.h----------------------

#include <list>

RTS.h-----------------------

#include "chara.h"
#include "map.h"
#include <list>

chara.cpp--------------------
#include "chara.h"
#include "define.h"
#include <time.h>
#include <stdlib.h>


どうも define.h の双方向インクルードしてたみたいですね。