0

<の違いについて説明してください。ライブラリ内のheader.h>および "header.h"#includeディレクティブリンカはどの程度正確に(どの場所で)ファイルを検索しますか。検索はどのような順序で実行されますか?


1 답변


0

書くとき<stdio.h>システムのインクルードディレクトリにあるヘッダファイルを参照しています。書くとき#include <stdio.h>つまり、プリプロセッサは現在のディレクトリではなく、システムインクルードディレクトリでヘッダファイルを検索します。書くとき#include "stdio.h"つまり、プリプロセッサは現在のディレクトリで、次にその親ディレクトリでこのヘッダファイルの検索を開始します。だから私たちは自分自身を書くならstdio.hそれをカレントディレクトリに保存し、それをプログラムに含める#include "stdio.h"それから私達のヘッダはシステムヘッダの代わりに含まれるでしょう。

要するに、角括弧を使うと<>それから、標準のディレクトリが システム。引用符を使うと(" "それから、非標準ヘッダーが使用されていることを示しています。


  • これは必ずしも真実ではありません。これらのプリプロセッサディレクティブの違いは実装依存です。違いを判断する唯一の確実な方法は、あなたの特定のコンパイラのドキュメントを読むことです。 - David Schwartz
  • 「プリプロセッサは現在のディレクトリ内で、次にその親ディレクトリ内でこのヘッダファイルの検索を開始します。」親ディレクトリに?聞いたことがない。それはそれをそのように実装するコンパイラがないということではありません。 - glglgl

リンクされた質問


関連する質問

最近の質問