特定の C++ コード ソース/ヘッダー ファイル セットのすべてのグローバル名前空間名を表示するツールはありますか?
3 に答える
ファイルを前処理して出力を読み取ってみてください。これにより、コンパイルされるすべてのものがわかります。これには、iostream のように意図的に含めたすべてのものと、システム ヘッダーのように意図せずに含めたものすべてが含まれます。
GCC での例:
g++ -E file.cpp ... > file.i
他のコンパイラには、これを行うためのオプションがある可能性があります (ただし、たとえば、Visual Studio から直接実行することを期待している場合は、使用が難しくなる可能性があります)。
次に、ファイルを開きます。これは少し不可解です。# で始まる行は、どのファイル/行が読み取られているかなどの有用なことを示しています。一番下に行って上に読むかもしれません。
注: ... は、コンパイル時に渡す他のすべてのコンパイラ オプションと定義です。コンパイルに影響を与える可能性があるため、これは重要です。
そのためにCppDependを使用できます。また、CQLinq を使用してコード ベースをクエリする言語を使用すると、より複雑なクエリを実行して、目的のものを正確に取得できます。
これを行うツールがなく、掘り下げる必要があると感じた場合、およびVisual Studio 2010を使用している場合は、次のオプションのいずれかまたは両方を使用して開始することができます。
- プロジェクトのプロパティ->C/ C ++-> Advanced-> Show Includes-> YES
- プロジェクトのプロパティ->C/C++->プリプロセッサ->ファイルへの前処理->はい
これらの2つのオプションのいずれかまたは両方を使用すると、名前空間の外部に存在する宣言を見つける自家製のルーチンに入力を提供することができます。
これらのオプションは、何らかの形で、以前のバージョンのVisualStudioにも存在します。少なくともVS2005までさかのぼると思います。