0

プログラムを実行すると、次のメッセージが表示されます。

エラー:abc / xyz.h:そのようなファイルまたはディレクトリはありません。

abcは、実行しようとしているプログラムのCコードと同じディレクトリにあります。

4

1 に答える 1

2

<>ヘッダーを検索する場所は、と""バリアントの両方で、実装によって定義されます。

したがって、使用している実際の実装によって異なります。


C99 の関連ビットは、以下に引用されている 6.10.2、「ソース ファイル インクルージョン」(C11 では変更なし) からのものです。

フォームの前処理ディレクティブ

# include <h-char-sequence> new-line

<と区切り文字の間の指定されたシーケンスによって一意に識別されるヘッダーの実装定義の場所のシーケンスを検索し、>そのディレクティブをヘッダーの内容全体で置き換えます。場所を指定する方法またはヘッダーを識別する方法は実装定義です。

フォームの前処理ディレクティブ

# include "q-char-sequence" new-line

"デリミタ間の指定されたシーケンスによって識別されるソース ファイルの内容全体によって、そのディレクティブが置き換えられます。指定されたソース ファイルは、実装定義の方法で検索されます。この検索がサポートされていない場合、または検索が失敗した場合、ディレクティブは次のように再処理されます。

# include <h-char-sequence> new-line

元のディレクティブからの同一の含まれるシーケンス (存在する場合は > 文字を含む) を使用します。


多くの実装では、現在のディレクトリでインクルード ファイルを検索するため、ファイルが実際に<current-directory>/abc/include/libsomething/xyz.hである場合は、次を使用します。

#include "abc/include/libsomething/xyz.h"

または、次のように検索パスを変更するようにコンパイラを構成することもできますgcc -Iabc/include/libsomething

#include "xyz.h"

個人的には、競合の可能性が低くなるため、完全な仕様を好みます (インクルード ファイルの検索パスの別の場所にある可能性があります)。 xyz.h

于 2013-01-14T09:08:21.760 に答える