1

以下のファイルを考えると(意図的に、このファイルにヘッダーをA.h含めなかったことに注意してください)。<iostream>VS2010テキストエディタは、stdこの名前を認識しないため、下に赤い線を表示します。

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

<iostream>しかし、以下のようにファイルにヘッダーを含めると、を閉じてもA.cpp赤い線がファイルに表示されなくなります。これはどのように可能ですか?A.hA.cpp

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

2 に答える 2

1

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

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

ただし、プロジェクトがコンパイルされないようにインクルードの順序を切り替えると、赤い下線が削除されます。

于 2012-05-02T17:23:08.733 に答える
0

Visual Studioは、すべてのC++プログラマー向けに作成されています。これは、ヘッダーファイルに必要なものがすべて含まれているとは限らないことを意味します。ヘッダーに明示的に含まれていないものすべての下に赤い線を引くことは、ヘッダーが特定の順序で依存関係を持って含まれる厳しい環境で作業する開発者にとって、多くの誤検知を意味します。

そのため、Visual Studioは、ヘッダーが独立していると想定するのではなく、意味を理解しようとします。

それはあなたの情報源のベストプラクティスではないかもしれませんが、彼らはそれを説明しなければなりません。

于 2012-05-02T17:49:05.460 に答える