VS2010追加のインクルードディレクトリについて

このQ&Aのポイント
  • VS2010での追加のインクルードディレクトリ設定方法と、インクルードファイルへのパス指定についての質問です。
  • ソリューション内でフォルダを作成し、ヘッダーファイルを分けた場合、インクルードディレクトリに追加したフォルダのパスを指定することで、よりスムーズなインクルードが可能になります。
  • ただし、追加のインクルードディレクトリを設定しても、候補の自動表示には反映されないため、手動でパスを入力する必要があります。
回答を見る
  • ベストアンサー

VS2010追加のインクルードディレクトリについて

ソリューションと同階層にソースファイルやヘッダーファイルを散乱させるのは汚いなと思い、フォルダに分けました。 例) .slnの階層     mainフォルダ        main.h        main.cpp     sampleフォルダ        sample.h        sample.cpp      abcdフォルダ        abcd.h        abcd.cpp      efghフォルダ        efgh.h        efgh.cpp するとヘッダーをインクルードする時にパスが増えてしまうのも嫌だなと思って、 プロパティ   C/C++     全般       追加のインクルードディレクトリー で作ったフォルダを全て指定しました。 そうしたら一応 main.cpp で #include "sample.h" だけで通るのですが いつも #include "s まで打つとsample.hが候補で出てきてたのですが出なくなってしまいました。 代わりに当然といえば当然ですが #include "sample/sample.h" は候補に出てきます。 追加のインクルードディレクトリーをしても 候補は直接出てくるようには出来ないのでしょうか? パスを全部書いてしまうと追加した意味がありません… これと同様の質問なのですが、 abcd.cpp で main.h をインクルードしたい時も 候補には出ず、../を打って出てくると思うのですが こちらも追加のインクルードディレクトリをしても直接出るようには出来ないのでしょうか? なにか変なことを言ってるような気がしてきましたが よろしければ教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • plt_
  • ベストアンサー率59% (16/27)
回答No.1

環境のインクルードパスとして追加した場合は、 #include <s と山カッコ形式で打った場合に出てくるはずです。 個人的には、相対パス書いちゃうほうが好みですけどね。

majuppitto
質問者

お礼

ご解答有難うございます! ご助言大変ありがたいのですが、出てきてくれませんでした… パスを一々打ったほうがそのヘッダーの位置も感覚的に分かるので相対パスの方がいいのですかね…

関連するQ&A

  • Visual Studioのインクルードについて

    DirectXとc++でプログラミングしている初心者なのですが、 フリーのライブラリを使おうと思い調べていると 「インクルードディレクトリ追加」「ライブラリディレクトリ追加」 のような文面を見てDirectxSDKを入れた頃を思い出しまた。 そこでふと思ったのですが、DirectxSDKの時もそうでしたが 結局これは何をしているのでしょうか。 インクルードディレクトリにはヘッダーファイル的な何か。 ライブラリディレクトリには中身(ライブラリ)が入っていて そのパスを指定することによってコンパイラ側で関数を使用できるようになる。 ということなのでしょうか? また他のPCで作業するためには、同じディレクトリに同じ物がないと実行できませんよね? それなら、例えばUSBで持ち歩いて他のPCでといった場合は もうプロジェクトフォルダ内に該当ライブラリの\includeと\libを移動させておいて そのパスを指定しておけばどこでも実行できるってことなのでしょうか? ご教示よろしくお願いします。

  • Visual C++ 2008で<stdio.h>のインクルード文が使えない!?

    #include <stdio.h> int main(){ printf("hello!"); } で実行すると、 : warning C4627: '#include <stdio.h>': プリコンパイル済みヘッダーの使用を検索中にスキップされました ディレクティブを 'stdafx.h' に追加するか、プリコンパイル済みヘッダーをビルドし直します .\■■■.cpp(5) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか? と言ったエラーが起きてしまいます。 ちなみに、インクルードファイルらしき物を削除しまくった覚えがあります…。100%これが原因かと。 これが原因だとしたらどうすればいいんでしょうか? あと、DXライブラリが使えるように設定を変えたこともあります。 どこの何を変えたかは忘れてしまいましたけど。

  • include無しにclassが書けない

    粗末な質問タイトルで申し訳ありません。 Visual C++2010で、includeを書かずにclass宣言を行おうとすると「Error:PCH警告」が発生します。 この理由をご教授ください。 IntelliSense: PCH 警告: 適切なヘッダー停止位置が見つかりません。 というエラーメッセージが表示されるのですが、これはプロトタイプ宣言がないときに発生する警告らしいですね。私が書こうとしているソースコードを次に示します。 -----main.cpp---- class TestClass {}; int main(void) { return (0); } ----------------- このソースで、"class"の部分に赤波線が引かれて先述のエラーメッセージが表示されます。 このソースの先頭に#include<iostream>なり#include<stdlib.h>なり何かインクルードを記述すると警告はなくなります。 しかしクラスはその枠のみですし、ライブラリ関数も何も使用していないのでとくに必要なインクルードファイルも何もないと思うのですが、どうしてこのようなエラーが発生するのでしょうか。 あと、蛇足になりますが、本来はクラス宣言部分を別のヘッダーファイルに分けたいのです。 クラス宣言部分を別のヘッダーに分離してヘッダーの先頭に #pragma once を記述するか、分離したヘッダをmain.cpp内でインクルードしてもエラーは解消されます。 (何からもインクルードされなかったらエラーになる) もう何が何やらさっぱりわからないです><

  • VC++6.0でのインクルード

    VC++初心者です。 環境はVC++ on win2kなのですが、 ヘッダファイルを別のファイルにしてコンパイルしたいのですが、できません。 test.cppの中身 #include <iostream> #include <string> #include <stdio> ・・・* #include "kneko.h" using namespace std; int main() { kneko x("tama"); x.naku(); } kneko.hの中身 #ifndef __kneko_h #define __kneko_h class kneko { string name; public: kneko(){}; kneko(string n){ name=n; } void setname(string n){ name=n; } void naku() const { cout <<"My name is"<<"name"<<"."endl; } }; #endif この2つを同じディレクトリに入れて、 ビルド→コンパイルすると、*のところで 「インクルードファイルがオープンできません。」 というエラーが出ます。 ためしに*の行を削除すると、エラーが8つぐらい出てきます。 どうやらヘッダファイルを読み込めていないようです。 インクルードの書式が間違っているのでしょうか?

  • ヘッダーファイルのインクルード

    VC++6.0です。 ヘッダーファイルをincludeしていいかどうかは どのように決まるのでしょうか? classは、appとhogeの1種類があるとして、 app.h、app.cppとhoge.cpp、hoge.hの4つのファイルがあるとします。 1)appによるhogeのメンバの操作があって、その逆は無い場合 2)hogeもappのメンバを操作する場合 のそれぞれで教えてください。 最初、私は、そのclass内で別のclassのメンバ関数を 呼ぼうと呼ぶまいとincludeしてもかまわないと思っていました。 しかし、自分の作ったプログラムを検討したところ 1)の場合で、hogeのヘッダーに #include "app.h"と入れるとエラーになります。 hogeのcppファイルに#include "app.h"と入れてもエラーになります。

  • VC++のインクルード方法について

    VC++2008にて他フォルダファイルをincludeしたいと思いましたが ディレクトリが異なる為に、 4>d:\vss\xlmap\lib\fmfc\fmDbfFile.h(6) : fatal error C1083: include ファイルを開けません。'shapefil.h': No such file or directory と、エラーが出てしまい、コンパイルができません。 どのようにヘッダーファイルをincludeすればよいのでしょうか? お力添えして頂けたら幸いです。 宜しくお願いします。

  • ヘッダのインクルード時のエラー

    初歩的な質問で恐縮です。 以下のようなファイルの構成でc++のプログラムを組んでいます。 <header.h> class H { public: virtual void func() = 0; }; <fileA.cpp> #include "header.h" class A : public H { public: void func() {} }; <fileB.cpp> #include "header.h" class B : public H { public: void func() {} }; <main.cpp> #include "fileA.cpp" #include "fileB.cpp" int main() { A a; B b; a.func(); b.func(); return 0; } これをビルドしようとすると、「クラス"H"を再定義しようとしています」とエラーが出てコンパイルができません。理屈は分かるのですが、これの対処方法が分かりません。この場合、header.hはJAVAにおけるInterfaceのような役割としてそれを使うfileA.cpp、fileB.cppの両者にインクルードしておきたいのです。これはどのようにして対処すべきなのでしょうか?

  • prototype.jsでディレクトリが異なる外部HTMLを読み込みで

    prototype.jsでディレクトリが異なる外部HTMLを読み込みできません。 よろしくお願い致します。 prototype.jsを使用して「sample.html」に「header.html」を読み込みたく、http://suh45.blog9.fc2.com/blog-entry-91.html のサイト様を参考にしています。 「header.html」が「sample.html」に対して、同階層または下階層にある場合は問題なく読み込みできるのですが、下記コードのように、sample.htmlが置いてあるディレクトリと同じ階層にあるディレクトリ(hogehoge)内にheader.htmlを移動させると読み込むことができなくなってしまいます。 ■読み込みたい相対パス <script type="text/javascript"> <!-- include("header", "../hogehoge/header.html"); // --> </script> これはこういったものなのでしょうか? ぜひお教え頂けると幸いです。

  • ユーザディレクトリのパス指定

    C++でユーザディレクトリ下のファイルを操作したいと思い http://hkpr.info/vc/UserDirectory/ のページを参考にプログラムに適用しました。 その結果、該当フォルダのパスがString型の変数に入ることは確認しました。 しかし、そのフォルダからさらに、下のフォルダ内のファイルを指定しようと そのString型の変数の後ろに「+=」を用いて、さらにパスを連結をしようとしたのですが、 うまく連結できませんでした。 例) 上記リンク先のサンプルで得たパス+=追加のパス; →連結されず、サンプルで得たパスのまま 追加のパス+=上記リンク先のサンプルで得たパス; →連結される。しかし、パスの順序が逆なのでパスとしては意味をなさない 上記リンク先のサンプルを利用しつつ、追加パスの連結を実現するにはどうすればいいのでしょうか? もしくは、ユーザディレクトリの取得としてもっといい方法があるのでしょうか? 補足ですが 「アプリケーションデータのディレクトリ」を利用したいと考えています

  • ヘッダのinclude LSI試食版

    はじめまして。 よろしくお願いします。 コンパイラー:LSI C-86 Ver.3.30 試食版 OS:Windows Me includeフォルダの中にあるヘッダ以外に 新しいヘッダnew.hを \lsic330c\INCLUDEフォルダの中にいれて 1.cというファイルで #include<new.h> としてみたのですが、 コンパイル時にlcc 1.cとしてみても 1.c 1: ファイル new.hがオープンできない(No such file or directory) というエラーがでてしまいます。 よろしくお願いします。

専門家に質問してみよう