2重インクルードについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
かす

2重インクルードについて

#1

投稿記事 by かす » 14年前

#include "DXLib.h"
#include "FMothershipPlayer.h"
#include "EnemyT.h"
#include "Field.h"

FMothership_t FMothership1[FM1_MAX];

とcppファイルでなっています。このcppにエラーが出てしまいます。
各ヘッダファイルにもポインタを使うため、ヘッダファイルが以下の様に使われています。

#include "FMothershipPlayer.h" → FMothership_tが定義されています。おそらくこれが複数回定義されています。
#include "EnemyT.h" → #include "EnemyPlayer.h"、#include"FMothershipPlayer.h"があります
#include "Field.h" → #include "EnemyPlayer.h"、#include "EshotPlayer.h"、"MothershipPlayer.h"、"MshotPlayer.h"、#include "FMothershipPlayer.h"があります。

このように#include "FMothershipPlayer.h" によって3重にFMothership_tが定義されてしまっているのですが、どのヘッダファイルにも
#ifndef
#define
#endif
2重インクルード防止をしています。にもかかわらず
     'FMothership_t' : 不明なオーバーライド指定子です
といったエラーがでます。試しに、#include "EnemyT.h" 、#include "Field.h"をとってみたらエラーは出ませんでした。
思うに2重インクルード防止がなされていないのだと思います。

どういった原因があるのかどなたか心当たりのある方、よろしくお願いします。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 2重インクルードについて

#2

投稿記事 by ISLe » 14年前

Field.hの最後にある関数プロトタイプが;(コロン)で終わっていない、といったところでしょうか。

ex.
void foo() // ;が無い
FMothership_t FMothership1[FM1_MAX]; // error C3646: 'FMothership_t' : 不明なオーバーライド指定子です

かす

Re: 2重インクルードについて

#3

投稿記事 by かす » 14年前

やばい、その通りでした

そんなことより、このわずかな情報でなんでわかったんですかね~凄すぎですよISLeさん
エスパーなんですね

くだらないことで質問してしまってすいませんでした。ありがとうございます!

閉鎖

“C言語何でも質問掲示板” へ戻る