ページ 11

龍神録プログラミング 第8章

Posted: 2010年8月26日(木) 21:30
by 釣り師
龍神録プログラミングの館、第8章で指示のあった通りに書いて実行しようとしたところ、エラーが酷いです。

1>c:\users\省略\desktop\project\1章\mydat\include\struct.h(18): error C2065: 'PAD_MAX' : 定義されていない識別子です。
1>c:\users\省略\desktop\project\1章\mydat\include\struct.h(15): error C2371: 'ch_t' : 再定義されています。異なる基本型です。
1>c:\users\省略\desktop\project\1章\mydat\include\struct.h(15) : 'ch_t' の宣言を確認してください。
1>c:\users\省略\desktop\project\1章\mydat\include\struct.h(19): error C2371: 'pad_t' : 再定義されています。異なる基本型です。
1>c:\users\省略\desktop\project\1章\mydat\include\struct.h(19) : 'pad_t' の宣言を確認してください。
1>c:\users\省略\desktop\project\1章\mydat\include\struct.h(23): error C2371: 'configpad_t' : 再定義されています。異なる基本型です。
1>c:\users\省略\desktop\project\1章\mydat\include\struct.h(23) : 'configpad_t' の宣言を確認してください。

定義されていない、と書かれていますが「定義へ移動」を行った際、ちゃんと定義されているとおもわれる。場所に飛んでくれます

念のため、龍神録第8章のファイルとも照らし合わせてみたのですが、間違いは無いようでした。
「定義へ移動」等行った際も8章のファイルと同じ場所にジャンプします。

どなたか、原因はここでは?など思われる方、ご教授お願いします。
使用していたファイルを添付しておきます、お願いします。

ちなみに、第8章で取り扱っているファイルは、
struct.h
define.h
GV.h
function.h
ini.cpp
key.cpp
char.cpp
main.cpp
です。ここのどこかに間違いがあるはずなのですが…。


すみません。追記です
Visual C++2010を使用しています 画像

Re:龍神録プログラミング 第8章

Posted: 2010年8月26日(木) 21:34
by Dixq (管理人)
struct.hはdefine.hから呼んでいると思いますが、定義してから呼んでいますか?
定義は書いてあっても使う前に定義しなければなりません。

Re:龍神録プログラミング 第8章

Posted: 2010年8月26日(木) 21:39
by 釣り師
出来ました!ありがとうございます!

どうやら、define.h内で何を思ったか#include "struct.h"を2回呼んでいたみたいで…。
それと、define.hの一番下でincludeしてやって解決しました。
includeした場所にそのファイルの中身を書いたことになるんですね。だから2回定義してしまったと言うことですか。
勉強になりました。有難うございました。おかげで解決しました!

Re:龍神録プログラミング 第8章

Posted: 2010年8月26日(木) 21:47
by Dixq (管理人)
そのように2回インクルードしてしまう事を2重インクルード、重複インクルードと言いますが、これを避ける方法もあります。
例えば
定義の前後にこのように書いてみてください。

#ifndef ●●
#define ●●

定義

#endif

●●は何でも良いです。ファイル名やクラス名を大文字で書いたりするのが一般的でしょうか。
構造上複数回同じファイルをインクルードしてしまう事は良くありますが、このようにすることで重複インクルードが防止出来ます。

2回目以降ここを通るときは、●●が定義されているので、定義部分は通らないということですね。

Re:龍神録プログラミング 第8章

Posted: 2010年8月26日(木) 21:53
by 釣り師
なるほど・・・。
ためになりました!ありがとうございます!