Forum: Compiler & IDEs Wie lange Zeilen umbrechen?


von Werner (Gast)


Lesenswert?

Hallo,
um mein Program etwas besser lesbar und später nachvollziehbar zu machen 
würde ich gerne die Variablen wie folgt beschreiben:
1
TCCR1A = (1<<COM1A1) | \    //Compare Output Mode for Channel A (Page 136)
2
         (0<<COM1A0) | \    //Compare Output Mode for Channel A (Page 136)
3
   (0<<COM1B1) | \    //Compare Output Mode for Channel B (Page 136)
4
   (0<<COM1B0) | \    //Compare Output Mode for Channel B (Page 136)
5
   (0<<COM1C1) | \    //Compare Output Mode for Channel C (Page 136)
6
   (0<<COM1C0) | \    //Compare Output Mode for Channel C (Page 136)
7
   (1<<WGM11)  | \    //WaveFormGenerationMode (Page 138)
8
   (0<<WGM10);      //WaveFormGenerationMode (Page 138)
Dabei meckert WinAvr aber mit
1
../HelloWorld2.c:33: error: stray '\' in program

Warum geht das so nicht?

Danke
 Werner

von Marian (Gast)


Lesenswert?

Probiere es mal ohne '\'. Einfach so umbrechen.

von Jörg X. (Gast)


Lesenswert?

Der '\' muss das letzte Zeichen in der Zeile sein, aber das würde in 
deinem Fall den ersten Kommentar verlängern.
Wenn du einfach noch ein Paar Klammern benutzt geht's auf jeden Fall:
1
TCCR1A = ( 
2
    (1<<COM1A1) |    //Compare Output Mode for Channel A (Page 136)
3
    (0<<COM1A0) |    //Compare Output Mode for Channel A (Page 136)
4
    (0<<COM1B1) |    //Compare Output Mode for Channel B (Page 136)
5
    (0<<COM1B0) |    //Compare Output Mode for Channel B (Page 136)
6
    (0<<COM1C1) |    //Compare Output Mode for Channel C (Page 136)
7
    (0<<COM1C0) |    //Compare Output Mode for Channel C (Page 136)
8
    (1<<WGM11)  |    //WaveFormGenerationMode (Page 138)
9
    (0<<WGM10)       //WaveFormGenerationMode (Page 138)
10
   ) ;

hth. Jörg

von Werner (Gast)


Lesenswert?

Super, das wars. Hat auch gar nicht weh getan ;-)

Danke
  Werner

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Jörg X. wrote:

> Wenn du einfach noch ein Paar Klammern benutzt geht's auf jeden Fall:

Es geht auch komplett ohne Klammern.  Newlines sind einfach nur
whitespace in C und dürfen daher überall dort stehen, wo auch ein
Leerzeichen oder ein Kommentar stehen darf.

Die Zeilenfortsetzung mit "\\\n" hat eigentlich nur an einer einzigen
Stelle Sinn: innerhalb der Definition eines Makros.  Wie bereits
bemerkt, muss dann aber der Backslash wirklich unmittelbar vor dem
Zeilenende stehen.  Wenn man trotzdem noch einen Kommentar unterbringen
will, muss man einen ,,klassischen'' C-Kommentar davor anbringen:
1
#define FOO \
2
   (1 << BAR) /* set the BAR bit */ |\
3
   (1 << DOO) /* ...and the DOO bit, too */

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.