2017-09-18 19 views
0

Cにファイルを含めるには、2つの方法があります。#<file.h>または "file.h"を#includeにする必要がありますか?

#include <headerpath/header.h> 

または

#include "headerpath/header.h" 

最初のものは、コンパイラによって知られているディレクトリを使用してファイルを探しますので、我々は標準含めることができますファイルはどこにあるのかわからなくても。 2番目の方法は、引用符間のパスのみを使用してファイルを検索します。 (検索が失敗した場合、コンパイラは代わりに最初の方法を試みます)。

コンパイラが知っているディレクトリのリストに1つ以上のディレクトリを追加することができます(最初の方法)。たとえばgccの場合、-Iオプションがあります。

だから最後に、これらの2次のコードは、(path_to_headerがディレクトリである)と同等です:

1)

#include "path_to_header/header.h" 

int  main(void) 
{ 
    return (0); 
} // Compiling with : gcc main.c 

2)

#include <header.h> 

int  main(void) 
{ 
    return (0); 
} // Compiling with : gcc main.c -I path_to_header 

だから私の質問は以下のとおりです。 例えば、自分のヘッダファイルを使って、1)か2)を使うべきですか?どうして ?たぶんそれは個人的な選択でしょうか?知るべき異なる状況はありますか?読書:)のため

感謝の

編集:私は二つの方法の違い(私は、私が説明したように、私はそれらを理解this postのおかげだと思います)を探していないよ 、私はそこにあるかどうかを知りたいと思いましたグループワークや同じプログラムのために別のコンパイラを使っていることを知っておくべきいくつかの特殊な状況...私の考えをどのように公式化するのか分からないかもしれません(あるいは本当の答えがないばかげた質問です) )。

+1

システムヘッダを含む場合は<>を使用し、現在のソースファイルのパスと相対的なヘッダを含む場合は ""を使用してください。 – hetepeperfan

+1

[#と#include "filename"の相違点は何ですか?](https://stackoverflow.com/questions/21593/what-is-the-difference-between-include-filename-and-lib-label-files-and-filename-and-files.html)インクルードファイル名) –

+0

'#include" path_to_header/header.h "は"標準ファイルをどこに置かなくても含めることができます " 。時々、謎のビットは良いです。 #3 '#include" header.h "'を使用してください。 – chux

答えて

2

使用:プロジェクトの使用のヘッダの

#include <stdio.h> 

#include "project/header.h" 

は、追加のためのコマンドラインでオプション-Iを使用しますライブラリ。

-1

ヘッダーファイルは、ヘッダーを使用するファイルと同じフォルダーのように、定義されたパスにある場合は、この方法 "header.h"を使用する必要があります。 ヘッダーが、ヘッダーが含まれているソースではないシステムヘッダーの場合は、< header.h>を使用する必要があります。

1

C standardによると、それらの間の唯一標準差が#include "..."ソースファイルを含む(およびNOソースファイルが見つからない場合、バック<...>挙動に低下)しながら#include <...>ヘッダを含むことです。他のすべての違いは実装定義です。

例えば、stdlib.hのような標準ヘッダーは、実際にはファイルではなく、代わりにコンパイル時にコンパイラによって挿入されるため、区別が重要です。

このようなヘッダマジックはないので、あなた自身の仕事からどのソースファイルを含めるべきか、そしてコンパイラが扱うべきもの(システムライブラリなど)を正確に知る必要があります。プロジェクトのファイル構造に含まれていないインクルードには<...>を使用してください。(おそらく、プリコンパイルされている)標準ライブラリのヘッダの

関連する問題