9

Eclipse CDTでコードテンプレートを定義する場合、${include_guard_symbol}に変換されるという名前の変数を使用できますMYFILE_H

もっと明確なものが欲しいのですが:SRC_MYFOLDER_MYFILE_H

StackOverflowの質問への回答に記載されている手順に従いました。EclipseCDTのinclude-guardをカスタマイズします${include_guard_symbol}、空の文字列を返すだけです。インクルードガードに名前空間を追加することについて、Stack Overflowで他の関連する質問も見ましたが、それは私が探しているものではありません。

Eclipseバージョン3.5.2とCDTバージョン6.0.2を使用しています。

望ましい結果を達成する別の方法はありますか?

4

3 に答える 3

4

私がインストールした最も古いバージョンは 3.7 で、そこでテストしたものと 4.2 でテストしたところ、参照されたリンクは OP が望んでいることを正確に実行します。(OPは3.5.2を使用しています)。将来ここに来る人のために、ここに手順があります

  1. Eclipse を終了する
  2. ワークスペース フォルダーに移動し、移動を続けます。\.metadata\.plugins\org.eclipse.core.runtime\settings
  3. modを作成する前に、設定フォルダーのバックアップを作成するのが好きです
  4. org.eclipse.cdt.ui.prefs指定されたファイルをテキスト エディタにロードします
  5. この行を追加します(私は3行目に入れました)
    codetemplates.includeGuardGenerationScheme=2
  6. ファイルを保存します。
  7. 日食を再開する

src フォルダーの下に MyFolder という名前のフォルダーを作成しました。次に、右クリックして新しいヘッダー ファイルを追加すると、次の結果が得られました。

#ifndef SRC_MYFOLDER_TEST_H_
#define SRC_MYFOLDER_TEST_H_

#endif /* SRC_MYFOLDER_TEST_H_ */
于 2013-09-18T00:21:15.210 に答える
1

これからの主なポイント:EclipseCDTコードテンプレートをカスタマイズする方法

1つの解決策は${include_guard_symbol}、テンプレートをすべて一緒に破棄し、他の事前定義された変数のいくつかを使用して、自分で定義することです。このようなもの:

${filecomment}

#ifndef MyProject_${file_base}_h
#define MyProject_${file_base}_h

${typecomment}
${declarations}

#endif /* MyProject_${file_base}_h */

したがって、inc / Foo.hという名前のヘッダーファイルの場合、インクルードガードは次のように挿入されます。

#ifndef MyProject_Foo_h
#define MyProject_Foo_h

残念ながら、それをはるかに超えてカスタマイズする方法はないようです。たとえば、名前空間にネストされたクラスを定義した場合、名前空間をインクルードガードの一部として配置したい場合があります。現在、Eclipseでそれを行う方法を見つけることができません。

于 2012-11-07T13:16:18.743 に答える
0

あなたの質問に対する答えではありませんが、別の方法を提案したいと思います。インクルード ガードは、ヘッダー ファイル内のコードがコンパイル ユニットごとに複数回インクルードされることを禁止する、大雑把ではありますが、機能する方法を提供します。別の方法として、

#pragma once

コンパイラ指令。標準で定義されていないことは認識していますが、GNU、Clang、MSVC、Intel など、多数のコンパイラでサポートされています。を使用する#pragma onceと、移植性がほとんど失われ、名前の衝突が回避されます。これが、そもそも変更したい理由だと思います${include_guard_symbol}

より詳細な議論については、http://en.wikipedia.org/wiki/Pragma_onceもチェックしてください。

于 2012-11-14T12:28:45.477 に答える