プロが教えるわが家の防犯対策術!

現在OpenGLを使ったプログラムを作っていて,
hoge.hというヘッダファイルで
#include <GL/glut.h>

piyo.hというヘッダファイルには
#include "hoge.h"

そしてさらにhogehoge.hというヘッダファイルに
#include "piyo.h"
として,
hogehoge.cppのソースファイルにて
#include "hogehoge.h"してOpenGLの関数を使おうとしたら
エラーが出ました.

hogehoge.cppでhogehoge.hをインクルード
→hogehoge.hでpiyo.hをインクルード
→piyo.hでhoge.hをインクルード
→hoge.hでGL/glut.hをインクルード
というように,橋渡し的にインクルードはできないのでしょうか?
これはこのような仕様なのでしょうか?
それとも他に誤りがある可能性があるのでしょうか…

非常に困っております.
ご回答お待ちしております.

A 回答 (2件)

#include のネストが深すぎるとアウトですが, これくらいならさすがに問題ないはず.


#1 でも書かれていますが, ことコンパイルエラーについては「エラーメッセージ」や「そのメッセージで示される行 (の前後にある行)」が手がかりになるので省略せずに (もちろん勝手に解釈したりもせずに) 書いてください.
あと, 処理系 (コンパイラなど) の情報もあった方がいいし, OpenGL のバージョンも念のため書いてもらった方がいいかな.
    • good
    • 0

お使いの開発環境の明示やコードを明示しましょう


また、エラー内容の詳細も省略しないで投稿してみたほうが適切なアドバイスがつきやすいですよ

一般的にはご質問のような方法で問題ないと思います

そのソースの置いてあるフォルダ(ディレクトリ)が検索パスにない場合は#includeしたつもりでも出来ていないといった可能性があります

#include <>と #include "" とでは検索する範囲が違います
<>は環境変数などで開発システム用のパスも検索します
""の場合は そのファイルがあるパスまたは ""内に書かれているパスでしか探しません

Windowsの開発環境ですと質問のような構造になっていますよ
#include <windows.h>
などで Windows用の基礎的なヘッダーは面倒見てくれます
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!