マンガでよめる痔のこと・薬のこと

 タイトルのままですが、質問はヘッダーの書き方についてです。
 
 読み込むヘッダーの記述方法は、<>と""の2通りであることは知っていますが、その違いがよく分かりません。
 今まで見た参考書だと「<>は標準関数で、""は自作関数の場合に使う」と書かれているのですが、私の環境(VC++)だとstdio.hを""で括っても何の問題も無く、実行ファイルが出来ます。

 そうなっているからなのかもしれませんが、どうもよく理解できませんので、回答お願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

★回答


・<> で記述した場合は回答者 No.2 さんが正しく、環境変数 INCLUDE で設定された順にヘッダファイルを
 検索して、見つからないとカレント・ディレクトリを探します。
・"" で記述した場合は、カレント・ディレクトリを検索して見つからないと環境変数 INCLUDE で設定された
 順で検索します。
・よって、参考書で書かれている『標準関数』のヘッダは環境変数 INCLUDE で設定されている場合のことです。
・だから、"" で記述した場合はCソースのファイルと同じフォルダに自作関数のヘッダを普通置きますので
 参考書では『自作関数の場合に使う』と表現しているのです。→自作関数でも環境変数 INCLUDE で設定された
 ディレクトリにヘッダを入れておけば <> で記述可能ですよ。→特に自作ライブラリのヘッダはそうすると便利です。
・まとめると、ヘッダをカレント・ディレクトリから検索して欲しい場合は "" で記述するが、標準のディレクトリ
 から検索して欲しい場合は <> でくくる訳ですな。
・以上。おわり。分かりましたか?検索順の違いですよ。→#include "stdio.h"でも可能なのは最後に検索されるから。
    • good
    • 0
この回答へのお礼

返事が遅れてすいません。

詳しい解説有難うございます。
特に4番目(だから、~)の説明でよく分かりました。

お礼日時:2006/12/24 00:39

<>の場合はヘッダを指定します。

どのような順序でヘッダを探索するか、どのようにしてヘッダを識別するかは処理系定義です。ヘッダはファイルであってもなくても構いません。

""の場合はヘッダファイルを指定します。探索順序はやはり処理系定義です。ヘッダファイルが見つからないか、処理系がこの形式をサポートしていない場合には、<>でヘッダを指定した場合と同じになります。

処理系定義の動作に関して、Visual C++がどのように振る舞うかについては、ヘルプを参照してください。
    • good
    • 0
この回答へのお礼

返事が遅れてすいません。

回答有難うございます。

>""の場合は~、
なるほどです。
今まで問題なく動いていたので特に意識していませんでしたが、そのような意味があったのですね。

>処理系定義の動作に関して~、
仰る通りです。ヘルプを参照します。

お礼日時:2006/12/23 23:41

探しに行く順序の違いだと思います。



参考URL:http://www.kouno.jp/home/c_faq/c10.html#8
    • good
    • 0
この回答へのお礼

返事が遅れてすいません。

回答有難うございます。

お礼日時:2006/12/23 23:06

<>は環境変数INCLUDEで設定されているディレクトリ(フォルダ)から該当ヘッダファイルを探し始め、無ければカレントディレクトリを探す。


""は<>の逆の順で該当ヘッダファイルを探す。

つまり、優先順位だった様に記憶しています。
ただ、記憶があやふやで全く自信有りませんf(^^;
    • good
    • 0
この回答へのお礼

返事が遅れてすいません。

回答有難うございます。

>つまり、優先順位だった様に記憶しています。
"優先順位"については知りませんでした。勉強になりました。

お礼日時:2006/12/23 23:03

「<>は標準関数で、""は自作関数の場合に使う」という習慣です。


どちらでも同じように処理されると記憶しています。
    • good
    • 0
この回答へのお礼

返事が遅れてすいません。

回答有難うございます。

お礼日時:2006/12/23 22:37

このQ&Aに関連する人気のQ&A

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


人気Q&Aランキング