2012-10-19 3 views
9

Bei der Definition von Codevorlagen in Eclipse CDT können wir eine Variable namens ${include_guard_symbol} verwenden, die in MYFILE_H übersetzt wird.

Ich hätte gerne etwas expliziter: SRC_MYFOLDER_MYFILE_H.

Ich folgte den Schritten in an answer to Stack Overflow question Customizing include-guard for Eclipse CDT, aber alles, was ich bekomme, ist für ${include_guard_symbol}, um eine leere Zeichenfolge zurückzugeben! Ich sah auch andere verwandte Fragen zu Stack   Overflow über adding the namespace to the include guard, aber das ist nicht, was ich suche.

Ich benutze Eclipse Version 3.5.2 mit CDT Version 6.0.2.

Gibt es eine andere Möglichkeit, das gewünschte Ergebnis zu erzielen?

Antwort

4

Die älteste Version, die ich installiert habe, ist 3,7 und ich habe dort und auf 4,2 getestet und die referenced link macht genau das, was das OP will. (Das OP verwendet 3.5.2).Für alle, hier hier kommen in die Zukunft sind die Schritte

  1. Ausfahrt
  2. Navigieren Sie zu Ihrem Arbeitsplatz Ordner Eclipse und dann zu \.metadata\.plugins\org.eclipse.core.runtime\settings
  3. Navigation halten Ich mag immer ein Backup der Einstellungen Ordner vornehmen, bevor Mods machen
  4. laden Sie die Datei org.eclipse.cdt.ui.prefs in einen Texteditor
  5. Fügen Sie diese Zeile (I in Zeile setzen Mine 3) genannt
    codetemplates.includeGuardGenerationScheme=2
  6. Speichern Sie die Datei.
  7. Restart eclipse

Ich habe einen Ordner MyFolder unter meinem src Ordner mit dem Namen. Dann habe ich rechts geklickt und hinzugefügt das Ergebnis war eine neue Header-Datei:

#ifndef SRC_MYFOLDER_TEST_H_ 
#define SRC_MYFOLDER_TEST_H_ 

#endif /* SRC_MYFOLDER_TEST_H_ */ 
+0

Sie haben Recht, die Antwort wurde bearbeitet, nachdem ich meine Frage gepostet habe. Ich benutze Eclipse nicht mehr, aber ich bin mir sicher, dass dies künftigen Besuchern helfen wird. Vielen Dank! – alestanis

+0

Danke! Das hat mir sehr geholfen! – m4l490n

0

Hauptpunkte von dieser: How to customize eclipse CDT code templates

Eine Lösung zu werfen ${include_guard_symbol} in der Vorlage alle zusammen ist, und es selbst definieren, möglicherweise einige der anderen vordefinierten Variablen. Etwas wie folgt aus:

${filecomment} 

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

${typecomment} 
${declarations} 

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

Also für eine Header-Datei inc/foo.h genannt, umfassen die Wache würde wie folgt eingefügt:

#ifndef MyProject_Foo_h 
#define MyProject_Foo_h 

Leider gibt kein Weg zu sein scheint viel darüber hinaus anpassen. Wenn ich zum Beispiel eine Klasse definiert habe, die in einem Namespace verschachtelt ist, möchte ich den Namespace möglicherweise als Teil des include guards verwenden. Ich kann derzeit keinen Weg finden, dies in Eclipse zu tun.

+0

Vielen Dank für Ihre Antwort. Ich hatte die Antwort schon gesehen, die du verlinkt hast, aber wie ich in meiner Frage gesagt habe, ist es nicht das, wonach ich suche. Ich hätte gerne den Ordner im Include-Guard, nicht nur einen Projektnamen. – alestanis

0

Nicht wirklich eine Antwort auf Ihre Frage, aber ich würde gerne eine Alternative vorschlagen. Include-Wächter bieten eine funktionierende, wenn auch grobe Art und Weise, Code in einer Header-Datei zu verbieten, die mehr als einmal pro Kompilierungseinheit enthalten sein soll. Als Alternative könnten Sie die

#pragma once 

Compiler-Direktive verwenden. Ich weiß, dass es nicht im Standard definiert ist, aber es wird von zahlreichen Compilern unterstützt, darunter GNU, Clang, MSVC und Intel. Wenn Sie #pragma once verwenden, verlieren Sie wenig Portabilität und Sie vermeiden Namenskonflikte, von denen ich annehme, dass Sie den Grund dafür haben, dass Sie zuerst ${include_guard_symbol} ändern möchten.

Sie können auch http://en.wikipedia.org/wiki/Pragma_once für eine gründlichere Diskussion.

+0

Danke, aber das ist keine Option, ich arbeite an Multi-Plattform/Compiler-Projekten und möchte nicht auf diese Weise gehen. http://StackOverflow.com/a/1696194/1225541 – alestanis