Forum: PC-Programmierung Eclipse: automatisches Entfernen von Tabs vor Präprozessoranweisungen verhindern


von Ralf (Gast)


Lesenswert?

Hi,

kann man Eclipse das automatische Entfernen von Tabs vor 
Präprozessoranweisungen abgewöhnen? Konfigurieren kann man ja alles 
mögliche und noch mehr, nur das offenbar nicht :/

Ich ziehe es vor, Headerdateien eben so zu schreiben:
1
#ifndef _BLA_H_
2
  #define _BLA_H_
3
4
  #define xyz 1
5
  ...
6
#endif
Setze ich einen Tab und dann #, so geht auch schon der Tab flöten. 
Gleiches Spiel wenn man beispielsweise zwischen zwei #define-Anweisungen 
noch eine Anweisung setzen will und am Zeilenanfang Enter drückt, um 
eine neue Zeile einzufügen - die Zeile, die versetzt wird verliert den 
Tab argl das kekst...

Oder ist es absolut heiliger K&R-Stil, dass Präprozessoranweisungen 
IMMER am Zeilenanfang stehen?

Ralf

von Vn N. (wefwef_s)


Lesenswert?

Grundsätzlich lässt sich der Stil unter "Window->Preferences->C/C++" 
umstellen.

von Sven P. (Gast)


Lesenswert?

Früher(tm) gab es wohl Präprozessoren, die unbedingt eine Raute in der 
ersten Spalte sehen wollten. Ich hab so einen noch nicht gefunden, weiß 
es also auch nur aus zweiter Hand.

Man hat sich dann wohl so beholfen:
1
#if TOKENS
2
#  include <...>
3
#endif

von jack (Gast)


Lesenswert?

Oder Eclipse will dir sagen dass es deine übermäßige Benutzung von 
verschachtelter Präprozessor-Magic nicht gut findet :-)

von Michael (Gast)


Lesenswert?

jack schrieb:
> Oder Eclipse will dir sagen dass es deine übermäßige Benutzung von
> verschachtelter Präprozessor-Magic nicht gut findet :-)

Was bitte soll daran falsch sein, den Inhalt eines IF-Blockes 
einzurücken?

von Ralf (Gast)


Lesenswert?

vn nn schrieb:
> Grundsätzlich lässt sich der Stil unter "Window->Preferences->C/C++"
> umstellen.
Joa, da hab ich auch umgestellt was ich unpassend fand - das o.g. kann 
man dort entweder nicht einstellen oder ich hab's nicht gefunden.

Sven P. schrieb:
> Man hat sich dann wohl so beholfen: ...
Hm, okay, das wär die Kompromissvariante :) An den Versuch das so zu 
schreiben hab ich gar nicht gedacht.

jack schrieb:
> Oder Eclipse will dir sagen dass es deine übermäßige Benutzung von
> verschachtelter Präprozessor-Magic nicht gut findet :-)
oO Für jede Fehleinstellung blinkts irgendwo rot auf, und da hat nix 
geblinkt, also ist es an sich in Ordnung :)

Michael schrieb:
> Was bitte soll daran falsch sein, den Inhalt eines IF-Blockes
> einzurücken?
Frag ich mich auch, allerdings wäre es hier ja ein "Spezialfall".

Ralf

von Vlad T. (vlad_tepesch)


Lesenswert?

Michael schrieb:
> Was bitte soll daran falsch sein, den Inhalt eines IF-Blockes
> einzurücken?

falsch ist daran, dass es ein Präprozessorkommando ist und kein 
if-block.
Und präprozessor-Kommandos nun mal in der ersten Spalte beginnen sollten 
(auch wenn sich, wie bereits erwähnt, kein compiler daran stört)

von Karl H. (kbuchegg)


Lesenswert?

Vlad Tepesch schrieb:

> Und präprozessor-Kommandos nun mal in der ersten Spalte beginnen sollten
> (auch wenn sich, wie bereits erwähnt, kein compiler daran stört)


Hatte ich ehrlich gesagt auch immer gedacht.
Dann hab ich im C-Standard nachgesehen: Nope. Leerzeichen sind erlaubt.

von Vlad T. (vlad_tepesch)


Lesenswert?

seltsam, ich meine genau deswegen auch mal nachgeschaut zu haben.

aber hier der absatz:
1
6.10    Preprocessing directives
2
3
Different implementations have had different notions about whether white space is permissible
4
before and/or after the   signalling a preprocessor line.  The C89 Committee decided to allow any
5
#
6
white space before the  , and horizontal white space (spaces or tabs) between the   and the
7
# #
8
directive, since the white space introduces no ambiguity, causes no particular processing problems,
9
35
10
and allows maximum flexibility in coding style.
http://www.open-std.org/jtc1/sc22/wg14/
http://www.open-std.org/jtc1/sc22/wg14/www/projects#9899

Also scheinbar wirklich egal.

aber schon deswegen, weil die meisten IDEs mit zurücksetzen nerven, 
würde ich hakus Lösung benutzen. Schöner aussehen tut es meiner Meinung 
nach sowieso.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.