2017-08-17 8 views
4

私はVS2010で開発中で、既存のプロジェクトにコードを追加しようとしています。 これは途中でWin32/MFCです。#include "MyClass.h"と#include "。 myclass.h"の違いは何ですか?

そして、私は助けるが、MyClassクラスに以下のCPPファイルの先頭に含まれていた(この場合はMyClassのは、CDialogのクラスの拡張だった)ことに気づくことができませんでした:私は気づい

#include "MyClass.h" 
#include ".\myclass.h" 

は、 2番目のインクルードは大文字小文字なしで入力されましたが、なぜそれほどわかりませんでしたか?

+0

Windowsのファイル名は大文字と小文字が区別されません。名前 "MyClass.h"と "myclass.h"は同じです。 –

答えて

1

MyClass.h」 は、プロジェクト設定で定義されているINCLUDE_DIRパスで検索されます。現在のファイルと同じディレクトリで "./myclass.h"が検索されます。

Windowsファイル名では大文字と小文字が区別されないため、作業ディレクトリがインクルードパスにある場合、これらの行は同じファイルを指しています。私は疲れていたと虚偽の事を書いて、感謝アルネフォーゲル:

この冗長性は

編集...おそらく、少なくとも一度含まれるファイルを確実にするためにVSのための方法です。 あなたのコンパイラはあなたのヘッダファイルをファイル名のように探すだけです#include <file.h> しかし、私は冗長性がすべてのファイルシステムに準拠していると思います。

+0

該当しません。https://msdn.microsoft.com/en-us/library/36k2cdd4.aspx –

+0

を参照してください。あなたは大丈夫です、私は疲れました...申し訳ありません、私は自分の投稿を編集しました。ありがとう! – Caesar

+0

私が言っていることは、ドキュメントに記載されている "。\ something.h"と "something.h"の間に違いがないということです。引用符と山括弧の間には違いがあります。詳細は実装定義のものであり、あなたが提案したOSに依存するものもあります。 –

0

.\は現在のディレクトリを調べると言います。私はそのヘッダーのインクルードガードを推測していますが、それは問題ではありません。

0

#include "MyClass.h"は環境パスから、#include ".\myclass.h"は現在のパスからです。

ほとんどの場合、あなたのプロジェクトのincディレクトリに "MyClass.h"が、他のパスにはMyClass.cppがあります。

関連する問題