2012-05-02 11 views
1

下記のファイルA.hが与えられています(このファイルには<iostream>ヘッダーは含まれていません)。 VS2010のテキストエディタでは、この名前が認識されないので、stdの下に赤い線が表示されます。VS2010テキストエディタについての好奇心

class A 
{ 
    public; 
    A() throw(std::bad_alloc); 
}; 

しかし、私は以下のようにA.cppファイルに<iostream>ヘッダが含まれている場合、赤線はA.cppが閉じている場合でも、A.hファイルに消えます。これはどのように可能ですか?

#include <iostream> 
#include "A.h" 
A::A() { throw std::bad_alloc(); } 

答えて

1

A.hを含んでいますが、<iostream>が含まれていない新しいC++ファイルを追加します。 stdの赤い下線が再表示されます。

VS2010は、どのファイルにそのヘッダーファイルが含まれているかを認識しています。いずれかがstdについて知らない場合は、問題を指摘します。

しかし、プロジェクトのコンパイルが行われないようにインクルードの順序を変更すると、赤い下線が削除されます。

+0

+1あなたのロジックは私にとって意味があります – Belloc

0

Visual Studioは、すべてのC++プログラマ向けに書かれています。つまり、ヘッダーファイルには常に必要なものがすべて含まれているとはみなせません。ヘッダーが明示的にインクルードされていないものすべての下に赤い行を置くには、ヘッダーが特定の順序で依存関係に含まれる厳しい環境下で作業する開発者にとって、誤検知が多いことになります。

Visual Studioは、ヘッダーが自分の上に立つことができると仮定するのではなく、あなたが意味するものを理解しようとします。

ソースではベストプラクティスではないかもしれませんが、それを考慮する必要があります。

関連する問題