Kurze Registernamen == Ungeschriebenes Gesetz

OP (Firma: Torrox.de) #4159901
Lesenswert?
• ▲
▼
Hat hier jemand soweit Einblick in die inneren Kreise von 
Hardware-Entwicklungsabteilungen, dass er meine Vermutung bestätigen 
kann?:
1
Es gibt ein ungeschriebenes Gesetzt, nach dem dürfen Registernamen maximal 8 Zeichen lang sein. Jeder Entwickler bekommt ein festes Kontinent an Buchstaben, die er bei der Benamung von Registern verwenden kann. Damit muss er auskommen.

Oder wie kann man sich Namen wie: NCR, NSR, NIPR, NPCR, NBTR etc. 
erklären?
Persönliche Seite #4159936
Lesenswert?
• ▲
▼
Torsten Robitzki schrieb:
> Oder wie kann man sich Namen wie: NCR, NSR, NIPR, NPCR, NBTR etc.
> erklären?

Schreibfaulheit. Reicht doch, und wer mit Registern arbeitet, muss eh' 
verstehen, was er macht. Sind ja keine Zufallskombinationen, sondern 
TLAs bzw. FLAs von beschreibenden Namen. C steht für Control, S steht 
für Status, R für Register. Also sind die ersten beiden schonmal ein 
N<irgendwas> Control- und Status-Register.
#4160273
Lesenswert?
• ▲
▼
Torsten Robitzki schrieb:
> Es gibt ein ungeschriebenes Gesetzt, nach dem dürfen Registernamen
> maximal 8 Zeichen lang sein.

Ha! Mein MSP430 hat mehrere Register mit 9 Zeichen langen Namen!
(Allerdings habe ich nur eines mit 10 Zeichen gefunden: USBPLLDIVB.)

Das liegt wahrscheinlich daran, dass ältere Assembler und Compiler 
längere Namen nicht unterstützt haben. Selbst C89 sagt noch (Abschnitt 
3.1.2):
> The implementation may ... restrict the significance of an external name
> (an identifier that has external linkage) to six characters and may ignore
> distinctions of alphabetical case for such names.

(C99 hat das dann auf 31 Zeichen erhöht.)
OP (Firma: Torrox.de) #4160521
Lesenswert?
• ▲
▼
Hallo,
der Hinweis, mit den Symbollängen leuchtet mir ein. Ich kann mich noch 
an Grafik-APIs aus dem Studium erinnern, die Funktionsnamen mit maximal 
6 Zeichen hatten.

Ich habe hier gerade einen XMC4200, dessen Reference manual hat 2165 
Seiten. Selbst wenn die Register 40 Zeichen lang wären, könnte ich mir 
nicht vorstellen, dass das manual deutlich länger wird. Ich könnte mir 
aber vorstellen, dass es deutlich lesbarer wird.

Bei dem Ding passt die Beschreibung eines einzigen Registers schon 
häufig nicht mehr auf eine Din A4 Seite ;-)

Wahrscheinlich ist der Grund für die kurzen Registernamen, dass es mal 
einen Grund gab und nun hat sich jeder dran gewöhnt und keiner 
hinterfragt es.

mfg Torsten
#4160576
Lesenswert?
• ▲
▼
Torsten Robitzki schrieb:
> Wahrscheinlich ist der Grund für die kurzen Registernamen, dass es mal
> einen Grund gab und nun hat sich jeder dran gewöhnt und keiner
> hinterfragt es.

Programmiert wird ja nicht erst seit vorgestern, sondern schon zu Zeiten 
als Bildschirme noch eine deutlich geringere Auflösung hatten. Jeder 
Programmierer hätte sich bedankt, wenn eine einzelne ASM-Anweisung nicht 
in eine Zeile gepasst hätte, nur weil den Entwicklern dieses Controllers 
bei der Registerbenennung die Phantasie durchgegangen ist.

mfg.
#4160595
Lesenswert?
• ▲
▼
Thomas Eckmann schrieb:
> Jeder
> Programmierer hätte sich bedankt, wenn eine einzelne ASM-Anweisung nicht
> in eine Zeile gepasst hätte, nur weil den Entwicklern dieses Controllers
> bei der Registerbenennung die Phantasie durchgegangen ist.

Ich würde mich auch heute noch bedanken wenn ich statt
TIMSK |= (1<<TOIE0);
das hier:
TIMER_COUNTER_INTERRUPT_MASK_REGISTER |= 
(1<<TIMER_COUNTER_0_OVERFLOW_INTERRUPT_ENABLE);
schreiben dürfte
OP (Firma: Torrox.de) #4160609
Lesenswert?
• ▲
▼
Torben H. schrieb:

> Ich würde mich auch heute noch bedanken wenn ich statt
> TIMSK |= (1<<TOIE0);
> das hier:
1
TIMER_COUNTER_INTERRUPT_MASK_REGISTER |= ( 1 << TIMER_COUNTER_0_OVERFLOW_INTERRUPT_ENABLE );

Ja, da würde ich mich dem Dank wirklich anschließen ;-) Das kann man 
dann sofort verstehen, auch wenn man mal ein Jahr nichts mit dem 
entsprechendem Controller gemacht hat. Wir arbeiten ja auch nicht mehr 
mit 14" Monitoren.

Die Software ist ja nur ein Aspekt. Der andere Aspekt ist die 
Dokumentation.
#4160617
Lesenswert?
• ▲
▼
Es steht dir frei ein headerfile zu basteln mit lauter
1
#define TIMER_COUNTER_INTERRUPT_MASK_REGISTER TIMSK

Wenn ich den Code nach einem Jahr wieder in die Hand nehme, dann muss 
ich das Datenblatt sowieso noch mal (zumindest in Teilen) lesen. Und 
dann weiß ich auch ganz schnell wieder, was TIMSK ist. Und mit einem 
passenden PDF-Editor kannst du auch mit suchen und ersetzen durch das 
Datenblatt gehen... Ich bin jedenfalls froh das Code und Datenblatt 
nicht mit solchen Spaghettibezeichnern gefüllt sind.
#4160630
Lesenswert?
• ▲
▼
Torsten Robitzki schrieb:
> Wir arbeiten ja auch nicht mehr
> mit 14" Monitoren.

Ja, heute haben wir 10" draufgelegt.

Stell dir vor, hinter den Anweisungen stehen noch Kommentare. Wenn du 
dir das Programm dann durchliest bewegst du deinen Kopf hin und her wie 
die Zuschauer eines Tennisspiels. Und wenn du das jeden Tag machst, 
gehst du irgendwann auch abends so nach Hause.

mfg.
Gast #4160767
Lesenswert?
• ▲
▼
Torsten Robitzki schrieb:
> Hat hier jemand soweit Einblick in die inneren Kreise von
> Hardware-Entwicklungsabteilungen, dass er meine Vermutung bestätigen
> kann?:
>
>
1
> Es gibt ein ungeschriebenes Gesetzt, nach dem dürfen Registernamen 
2
> maximal 8 Zeichen lang sein. Jeder Entwickler bekommt ein festes 
3
> Kontinent an Buchstaben, die er bei der Benamung von Registern verwenden 
4
> kann. Damit muss er auskommen.
5
>

Das sind nicht die Namen der Register sondern die Kürzel der Namen,
Siehe auch:
BRD
USA
GB

MfG,
#4160799
Lesenswert?
• ▲
▼
Torsten Robitzki schrieb:
> Ja, da würde ich mich dem Dank wirklich anschließen ;-) Das kann man
> dann sofort verstehen, auch wenn man mal ein Jahr nichts mit dem
> entsprechendem Controller gemacht hat. Wir arbeiten ja auch nicht mehr
> mit 14" Monitoren.

Ich habe sehr oft auf dem Laptop 2 Editorfenster nebeneinander geöffnet, 
dann ist man froh, wenn die Zeilen nicht zu lang sind. Einen so 
überbordenden Namen wie TIMER_COUNTER_0_OVERFLOW_INTERRUPT_ENABLE muss 
man zudem richtiggehend lesen, während man es bei kürzeren Namen direkt 
sieht. Des weiteren muss man sich beim tippen merken, wo die Underlines 
sind und welche Wörter allenfalls doch noch abgekürzt werden, es könnte 
z.B. ja auch TIMERCOUNTER0_OVERFLOW_INT_ENA heissen.

Ich bin letztlich auch eher ein Verfechter selbsterklärender 
Variablenamen, allerdings immer mit dem Ziel, diese nicht unnötig lange 
zu machen.
#4160811
Lesenswert?
• ▲
▼
P. M. schrieb:

> Ich bin letztlich auch eher ein Verfechter selbsterklärender
> Variablenamen, allerdings immer mit dem Ziel, diese nicht unnötig lange
> zu machen.

Erinnert mich an einer meiner Professoren aus dem ersten Semester Uni. 
Da gab es die "Dateiverarbeitungsvariable1" und die 
Dateiverarbeitungsvariable2"

Im Ernst. Bei diesen Kürzeln gibt es praktisch immer so etwas wie eine 
Nomenklatur. Hat man die erst mal intus, dass ist das alles kein 
wirkliches Problem mehr.
#4160814
Lesenswert?
• ▲
▼
Karl Heinz schrieb:
> Erinnert mich an einer meiner Professoren aus dem ersten Semester Uni.
> Da gab es die "Dateiverarbeitungsvariable1" und die
> Dateiverarbeitungsvariable2"

Dümmer gehts fast nicht ;-) Da nimmt er also einen endlos langen Namen, 
aber das eigentlich interessante - was die Variable macht - versteckt 
sich hinter einer Zahl. Das würde doch eher z.B. heissen "quelldatei" 
und "zieldatei" oder was auch immer sich hinter 1 und 2 versteckt.
OP (Firma: Torrox.de) #4160823
Lesenswert?
• ▲
▼
Torben H. schrieb:
> Es steht dir frei ein headerfile zu basteln mit lauter
>
1
#define TIMER_COUNTER_INTERRUPT_MASK_REGISTER TIMSK

Nein, eigentlich nicht wirklich. Ersten wäre es recht viel Arbeit, 
zweitens wäre mein Code dann für die Kollegen, die diese 
Registerabkürzungen auswendig kennen unnötig unlesbar.

Wie wäre es mit:
1
TIMER_COUNTER.INTERRUPT_MASK.OVERFLOW = ENABLED;

?
#4160831
Lesenswert?
• ▲
▼
P. M. schrieb:
> Karl Heinz schrieb:
>> Erinnert mich an einer meiner Professoren aus dem ersten Semester Uni.
>> Da gab es die "Dateiverarbeitungsvariable1" und die
>> Dateiverarbeitungsvariable2"
>
> Dümmer gehts fast nicht ;-)

Der Prof war ein älterer Herr, der seine Berufslaufbahn dem Vernehmen 
nach bei ... wie hiess noch mal die Bank mit angeschlossener 
Elektroabteilung ... ach ja ... Siemens absolviert hat.
Das erklärt ja dann wohl alles.
#4160835
Lesenswert?
• ▲
▼
Torsten Robitzki schrieb:
> Wie wäre es mit:
> TIMER_COUNTER.INTERRUPT_MASK.OVERFLOW = ENABLED;

Ich wäre eher ein Fan von solcherlei (hypothetisches device, nur 
beispielhaft):
1
TIM0->INTMSK = TIM_INTMSK_OVERFLOW
2
             | TIM_INTMSK_CHANNEL_A
3
             | TIM_INTMSK_CHANNEL_B;
4

5
TIM0->CONFIG = TIM_CONFIG_FOO
6
             | TIM_CONFIG_BAR
7
             | TIM_CONFIG_CLKSRC_BUSCLK
8
             | TIM_CONFIG_PRESCALE_DIV8;
(Firma: irgendeine) #4161089
Lesenswert?
• ▲
▼
P. M. schrieb:
> Vernünftiger als superlange Registernamen ist es wohl, sich Wrapper für
> Registerzugriffe zu basteln. Im Anwendungscode steht dann nirgendwo
> PORTA |= (1 << LED1), sondern bloss led_on(LED1).

Bei mir wird dann eher set_pin(LED1) oder SET_PIN(LED1) stehen,
denn wenn ich schon eine Funktion, welche normalerweise nur einen Pin 
auf high setzt, schreibe, sie aber led_on nenne, kann man gleich soweit 
gehen, das man eine Funktion led1_on() schreibt  ;)
#4161247
Lesenswert?
• ▲
▼
Michael M. schrieb:
> Bei mir wird dann eher set_pin(LED1) oder SET_PIN(LED1) stehen,
> denn wenn ich schon eine Funktion, welche normalerweise nur einen Pin
> auf high setzt, schreibe, sie aber led_on nenne, kann man gleich soweit
> gehen, das man eine Funktion led1_on() schreibt  ;)

Das Problem bei set_pin(LED1) ist dann aber wiederum, dass je nach 
externer Beschaltung die LED an oder aus geht. Habe ich 
Pin->LED->R->GND, dann geht die LED beim setzen des Pins aus, habe ich 
VCC->LED->R->PIN, dann geht sie beim setzen an. Also muss ich den 
Anwendungscode ändern, wenn sich die Hardware ändert.
#4161297
Lesenswert?
• ▲
▼
Thomas Eckmann schrieb:
> Torsten Robitzki schrieb:
>> Wir arbeiten ja auch nicht mehr
>> mit 14" Monitoren.
>
> Ja, heute haben wir 10" draufgelegt.
>
> Stell dir vor, hinter den Anweisungen stehen noch Kommentare. Wenn du
> dir das Programm dann durchliest bewegst du deinen Kopf hin und her wie
> die Zuschauer eines Tennisspiels. Und wenn du das jeden Tag machst,
> gehst du irgendwann auch abends so nach Hause.
>
> mfg.

Bei verständlichen Code brauchts wenig Kommentare. Ich bin froh, wenn 
ich solche langen Bezeichnungen finde, die selbsterklärend sind. Ich 
beschäftige mich ständig mit anderen Prozessorfamilien (x86,PPC,Ti32Bit 
DSPs,8-Bit Atmels/Freescale)und Programmiersprachen ( c++, Csharp, 
phyton, matlab...) Da hab ich nicht jedes mal den Nerf Datenblätter 
herraus zu kramen. Wenn ich jedes mal beim per Du mit den Registernamen, 
Speicheradressen und HW-Befehlen ankommen müsste ,käme ich zu nichts..
Moderator Persönliche Seite #4161630
Lesenswert?
• ▲
▼
Bernd K. schrieb:
> Torsten Robitzki schrieb:
>> Wie wäre es mit:
>> TIMER_COUNTER.INTERRUPT_MASK.OVERFLOW = ENABLED;
>
> Ich wäre eher ein Fan von solcherlei (hypothetisches device, nur
> beispielhaft):
>
1
> TIM0->INTMSK = TIM_INTMSK_OVERFLOW
2
>              | TIM_INTMSK_CHANNEL_A
3
>              | TIM_INTMSK_CHANNEL_B;
4
> 
5
> TIM0->CONFIG = TIM_CONFIG_FOO
6
>              | TIM_CONFIG_BAR
7
>              | TIM_CONFIG_CLKSRC_BUSCLK
8
>              | TIM_CONFIG_PRESCALE_DIV8;
9
> 
10
>

Sowas geht, ich habe hier mal diesen Weg experimentell beschritten:

   Beitrag "AVR-Register als Bitfields"

Mir fehlt leider nur die Zeit, das komplett durchzuziehen - für alle 
8-Bit-AVRs.
Moderator (Firma: Titel) Persönliche Seite #4161701
Lesenswert?
• ▲
▼
Ich hasse Unterstriche. Da muss ich jedes Mal am Wortende nachsehen, ob 
das Wort nicht doch noch weitergeht...

Oder wem (ausser dem Compiler) fällt der Unterschied hier sofort auf:
1
 TIM0->CONFIG = TIM_CONFIG_FOO
2
              | TIM_CONFIG_BAR
3
              | TIM_CONFIG CLKSRC_BUSCLK
4
              | TIM_CONFIG_PRESCALE_DIV8;
5

6
// gegen
7

8
 TIM0->CONFIG = TIM_CONFIG_FOO
9
              | TIM_CONFIG BAR
10
              | TIM_CONFIG_CLKSRC_BUSCLK
11
              | TIM_CONFIG_PRESCALE_DIV8;
#4162170
Lesenswert?
• ▲
▼
Ich halte mich selber eigentlich meist genau an die Registernamen des uC 
User Manuals. Wenn man sich daran hält gibt es keine Mißverständnisse 
und kann sich immer auf die richtigen Stellen im Manual beziehen. Man 
braucht für ein Projekt meist sowieso nur eine bestimmte Anzahl dieser 
Register und ich merke mir die mit der Zeit.

Mfg,
Gerhard
(Firma: irgendeine) #4162509
Lesenswert?
• ▲
▼
P. M. schrieb:
> Michael M. schrieb:
>> Bei mir wird dann eher set_pin(LED1) oder SET_PIN(LED1) stehen,
>> denn wenn ich schon eine Funktion, welche normalerweise nur einen Pin
>> auf high setzt, schreibe, sie aber led_on nenne, kann man gleich soweit
>> gehen, das man eine Funktion led1_on() schreibt  ;)
>
> Das Problem bei set_pin(LED1) ist dann aber wiederum, dass je nach
> externer Beschaltung die LED an oder aus geht. Habe ich
> Pin->LED->R->GND, dann geht die LED beim setzen des Pins aus, habe ich
> VCC->LED->R->PIN, dann geht sie beim setzen an. Also muss ich den
> Anwendungscode ändern, wenn sich die Hardware ändert.

Grundsätzlich hast du recht, aber wenn du die Hardware so abänderst, wie 
du es gesagt hast, dann musst du auch irgendwo den Code ändern, bei dir 
dann z.B. in der Funktion. Die Frage ist dann halt, was schöner ist.
Wahrscheinlich ist eine Kombination das beste, also eine boardabhängige 
Schicht, welche solche Funktionen wie info_led_on() beinhaltet, und in 
diesen wird dann auf die wiederverwendbare Schicht wie set_pin(LED1) 
zugegriffen.
Gibt es eigentlich irgendwo Texte/Infomaterial über dieses Thema?
Bis jetzt hab ich mir nur immer fremden Code angesehen, und überlegt, 
warum es vielleicht so oder so gelöst wurde.
#4162587
Lesenswert?
• ▲
▼
Michael M. schrieb:
> Grundsätzlich hast du recht, aber wenn du die Hardware so abänderst, wie
> du es gesagt hast, dann musst du auch irgendwo den Code ändern, bei dir
> dann z.B. in der Funktion. Die Frage ist dann halt, was schöner ist.
> Wahrscheinlich ist eine Kombination das beste, also eine boardabhängige
> Schicht, welche solche Funktionen wie info_led_on() beinhaltet, und in
> diesen wird dann auf die wiederverwendbare Schicht wie set_pin(LED1)
> zugegriffen.

Kann man so machen, ja. Wichtig ist halt, dass der eigentliche 
Anwendungscode und der hardwareabhängige Code ganz klar getrennt sind.
(Firma: irgendeine) #4162722
Lesenswert?
• ▲
▼
P. M. schrieb:
> Michael M. schrieb:
>> Grundsätzlich hast du recht, aber wenn du die Hardware so abänderst, wie
>> du es gesagt hast, dann musst du auch irgendwo den Code ändern, bei dir
>> dann z.B. in der Funktion. Die Frage ist dann halt, was schöner ist.
>> Wahrscheinlich ist eine Kombination das beste, also eine boardabhängige
>> Schicht, welche solche Funktionen wie info_led_on() beinhaltet, und in
>> diesen wird dann auf die wiederverwendbare Schicht wie set_pin(LED1)
>> zugegriffen.
>
> Kann man so machen, ja. Wichtig ist halt, dass der eigentliche
> Anwendungscode und der hardwareabhängige Code ganz klar getrennt sind.

Ich finde Wartbarkeit, also eine klare Struktur im Code und Doku (mache 
ich leider oft selbst nicht ;) sind am wichtigsten. Und 
Wiederverwertbarkeit ist auch ganz schön, so spart man sich Arbeit ;)
Und hardwareunabhängiger Code ist bei kleinen 8 bis 16 
Bit-Mikrocontrollern immer so eine Sache, da finde ich eine klare 
Struktur im Aufbau des Projektes, welche man schnell versteht wichtiger. 
Und dann kann man schauen, welche Dinge man Hardware unabhängig machen 
kann, und  in eine Bibliothek oder ähnliches Packt.
Ist eigentlich so was wie red_led_on() Hardwareunabhängig ;) ?
#4162830
Lesenswert?
• ▲
▼
Ich war beim Schreiben von Programmen an der Arbeit immer ein Freund 
vernünftiger Programmnamen:
LIEBE->Lagerung In Einem Betriebsteil Extern
KAUZ->Kaufteile Zusammenfassung
BUMMI->Baugruppen Und Maschinenteile Mit Interner Fertigung

Das wußten meine Kollegen auch zu würdigen und haben mir dabei 
zugearbeitet.
;-)
(Das waren noch vernünftige, gute Leute...)

mfG Paul
Moderator (Firma: Titel) Persönliche Seite #4162907
Lesenswert?
• ▲
▼
Frank M. schrieb:
> Stimmt, musste auch erst 3mal drüberschauen.
Gute Quote: einen Fehler gefunden und nur einen übersehen... ;-)

Bernd K. schrieb:
> Naja, dieser Einwand ist eher etwas konstruiert, praxisfern. Sowas
> streicht ne durchschnittliche C/C++ IDE normalerweise schon beim
> Schreiben mit deutlichen Markierungen an
Aber wenn du einen Quelltext einfach nur liest, dann siehst du das 
nicht, sondern du musst jedem einzelnen Unterstrich hinterherhecheln. 
Und sobald der Quelltest aus diesem a_u_s_s_c_h_w_e_i_f_e_n_d_e_n Grund 
lang und holprig wird und nicht mehr ohne Kopfverrenkung lesbar ist, 
dann hilft auch das Gemecker des Editors nichts.
Aber lassen wird das, Thema waren ja nicht die unsäglichen Unterstriche 
(an die man übrigens auf einer amerikanischen Tastatur mit nur einem 
Tastendruck rankommt), sondern die Kürze von Mnemonics und Registern...

Ich verwende auch gerne TLA oder FLABs (wie jede Berufsgruppe, wo man 
schnell mal reagieren muss, nur Patentanwälte schreiben "Zentrale 
Prozessoreinheit" statt "CPU"). Und zudem muss man sich ja vom Laien 
abgrenzen können... ;-)
Moderator Persönliche Seite #4162963
Lesenswert?
• ▲
▼
Lothar Miller schrieb:
> Gute Quote: einen Fehler gefunden und nur einen übersehen... ;-)

Dafür hätte ich 6mal drübersehen müssen ;-)

> Aber lassen wird das, Thema waren ja nicht die unsäglichen Unterstriche
> (an die man übrigens auf einer amerikanischen Tastatur mit nur einem
> Tastendruck rankommt), [...]

Nö. Der Unterstrich liegt auf der amerikanischen Tastatur rechts neben 
der 0 und ist nur zusammen mit der Shift-Taste erreichbar. Dort ist das 
Minus. Shift + Minus = Unterstrich.

Ich verwende als C-Programmierer viel lieber eine amerikanische 
Tastatur, nämlich wegen ' ; / \ [ ], welche alle über einen Tastendruck 
erreichbar sind. Aber auch { } usw. bediene ich lieber über Shift als 
über die zusätzliche Taste ALT, welche man hier gar nicht braucht.
Moderator Persönliche Seite #4162984
Lesenswert?
• ▲
▼
Michael M. schrieb:
> Und ich finde den Unterstrich leichter Lesbarer als CamelCase.

Geht mir genauso.

ReadTheFuckingValueIfLightGoesOff() finde ich nicht besonders gut 
lesbar. Die Unterstriche haben da eine ähnliche Wirkung wie Leerzeichen: 
Sie trennen Wörter. Damit ist der Lesefluß und das Verständnis zwischen 
den Ohren, was das denn nun zu bedeuten hat, einfacher und fixer.
#4163311
Lesenswert?
• ▲
▼
Lothar Miller schrieb:
> Aber wenn du einen Quelltext einfach nur liest, dann siehst du das
> nicht, sondern du musst jedem einzelnen Unterstrich hinterherhecheln.

Ich sehe aber immer noch nicht wie der Unterstrich überhaupt 
versehentlich verloren gehen kann. Wenn er mal da war und der Code schon 
mal kompiliert hat dann bleibt er da bis ans Ende der Zeit, es sei denn 
es sind zeichenfressende Heinzelmännchen heimlich nachts zugange.

Und beim Schreiben von neuem Code hat man ja sowieso seinen Editor der 
permanent Syntax und Grammatik checkt, und beim Studieren von fremdem 
Code an/mit dem man zu arbeiten gedenkt meistens auch.

Ich finde jedenfalls Unterstriche keineswegs schlechter oder besser als 
CamelCase, es ist nur so daß es (in C) breiter Konsens ist Makro-Namen 
in all-upper mit Unterstrichen zu schreiben und daran (und auch andere 
Konventionen) versuche ich mich so gut es geht zu halten (je nach 
verwendeter Sprache die einschlägigen Style-Guides).

Das deutliche Großschreiben von Makros im Gegensatz zu allem anderen 
dient übrigens auch der Lesbarkeit, gerade in C mit seinem Preprozessor 
und der daraus resultierenden irrsinnig kontextbehafteten Grammatik 
eines Quelltextes ist es schon hilfreich auf den ersten Blick zu sehen 
was was ist ohne vor dem Lesen erst mal alle benötigten Header ins 
Gehirn geladen zu haben.

Das ist übrigens der große Vorteil von Pascal gegenüber C, da kann man 
völlig kontextfrei irgendwo mittendrin anfangen zu lesen und alles 
ergibt sofort einen Sinn.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.