9

他のコードを見ているときは、変数がどこでどのように定義されているかを知りたいだけです。通常、私が今していることは、定義が見つかるまで変数の型を探すことです。これには非常に時間がかかります。そして、私はこの日常的な状況で私を助けることができるいくつかのツールがあると思います。このタスクで私を助けるためのいくつかのツールまたはコマンドの提案はありますか?

GUIを使用してプロジェクトを作成すると、これは自動的に行われることを私は知っています。私はGUIなしでこれを行う方法について話しているのです。テキストモードのみで作業しています。Linuxで実行していて、C / C ++を使用していますが、他の言語の提案を歓迎します。

どうもありがとう。

考えられる解決策

ミシェルは、彼のコメントの1つで、変数を再度定義する単純で効果的なソリューションを提案しています。その場合、コンパイル時に、コンパイラーは前の定義がどこにあるかを通知します。もちろん、このソリューションを適用するには、変数の局所性について事前に考える必要があります。

4

8 に答える 8

10

すでに最も適切なツールであるIDEを提供しています。これはまさにIDEが得意とする種類のものです。IDEがないと開発に苦労するのに、なぜIDEを使いたくないのでしょうか。

Emacs、VimなどがIDEとして機能することに注意してください。たとえば、SSHを使用しているなどの理由で、テキストのみの状況を維持したい場合にGUIの世界を強制することについては話していません。

(私はここで本当に失礼なことをしようとはしていません。理由を説明せずに明白な解決策を割り引いたと思います。)

于 2009-02-18T00:00:19.603 に答える
8

編集:OK、C++を使用していると言います。応答を編集しています。Cプリプロセッサを使用してから、変数にgrepを使用します。そもそも登場します。

cpp -I...(preprocessor options here) file.cpp | grep variable

Cプリプロセッサは、プログラムが使用するすべてのインクルードに参加します。定義は、ファイル内でその変数を使用する前に行う必要があります。完璧なものではありませんが、IDEや完全な言語記述/管理ツールがなければ、テキストしかありません。

別のオプションは、ctagsを使用することです。CおよびC++構文(とりわけ)を理解し、コマンドラインツール、emacs、viなどを使用して変数や関数を検索できます。

于 2009-02-18T00:00:13.033 に答える
5

私はcscopeとctagsを使用しています。コードベースで1回実行してから、Vimで、^]、[D、[Iなど]などのさまざまなコマンドを使用して、特定の単語の定義や宣言を見つけることができます。

これは、VisualStudioやEclipseなどのメガIDEによって提供される機能に似ています。

Cscopeは、これらの検索を実行するスタンドアロンツールとしても機能します。

于 2009-02-18T01:24:54.750 に答える
2

私は次の 3 つの方法のいずれかを使用します。

  1. CTagsを使用してソース ツリーを処理し (毎晩)、Vim (または他のエディター) でコマンドを使用して定義に直接ジャンプできます。
  2. grep (linux) または findstr (windows) を使用して、変数名または型のすべての出現箇所を検索します。通常、定義は非常に明白です。
  3. Vim では、スコープを逆方向に検索するだけで、探しているものが見つかることがよくあります。
于 2009-02-18T01:37:48.353 に答える
1

VIMではgd、ローカル変数宣言gDを表示したり、現在のファイルで定義されている場合はグローバル変数宣言を表示したりするために使用できます。参照Go_to_definition_using_g

また[i、ジャンプせずに定義を表示したり[I、含まれているすべてのファイルで変数のすべての出現箇所を表示したりすることもできます。これにより、定義も自然に表示されます。

于 2009-02-18T09:35:11.297 に答える
1

変数宣言の一般的なパターンを grep します。例: *、&、> または英数字の後に 1 つ以上の空白文字が続き、その後に変数の名前が続きます。または、変数名の後に 0 個以上の空白文字が続き、その後に左括弧またはセミコロンが続きます。本当に奇妙な状況 (ある種のマクロなど) で定義されていない限り、常に機能します。

于 2009-02-18T00:21:26.650 に答える
-1

Microsoft Visual Studioで作業している場合(C ++でも使用できると思いますが、Windowsワークステーションで作業する必要があります)、[定義に移動...]の右クリックメニューオプションに簡単にアクセスできます。現在マークされている変数、タイプ、またはメソッドの定義に移動します。

于 2009-02-18T00:01:58.537 に答える
-1

テキストモードのままにしたい場合は、emacs または vi と適切なプラグインを使用してこれを行うことができます。

しかし、本当に、21世紀に移動します。

EDIT:リモートサーバークラスターのビルド速度が必要なため、SSH経由でこれを行っているとコメントしました。

その場合は、ドライブをローカル マシンにマウントして IDE を使用し、SSH 接続してビルドを開始します。

于 2009-02-18T00:08:53.700 に答える