'\\' in commentar in c++ programm unter linux

hallo,

ich habe in einem c++ programm eine \ in commentar hinter der anweisung:

[anweisung] // \

im linux ,beim Debugger springt er über die anweisung hinweg und führt sie nicht aus!
irgendwie kommt er mit der doppel backslach nicht klar obwohl das in commentar steht
kann mir jemand das erklären
ich bin auch sehr dankbar für links zu der Thema: unterschiede in der file handling in windows/linux(//,\…)

youssef

Hallo,

[anweisung] // \

im linux ,beim Debugger springt er über die anweisung hinweg
und führt sie nicht aus!

wenn er über die nächste springt hätte ich ne Idee: der letzt backslash quotet das newline, der Kommentar geht also weiter. Hast Du noch ein Leerzeichen nach dem Backslash?

Grüße,
Moritz

Hallo Moritz,

ich wollte sagen dass er die zeile 3 springt und nicht ausführt
hier ist der code:

strcpy(buffer,(C_CHAR *) DSCP[0]); // \AFS
strcat(buffer,(C_CHAR *) DSCP[9]); // \SPRACHE
strcat(buffer,(C_CHAR *) DSCP[10]); // \
strcat(buffer,(C_CHAR *) usr_konfig.Sprache); // GER,ENG,FRA,ITA

Grüße,
Youssef

Hallo Youssef,

ich wollte sagen dass er die zeile 3 springt und nicht
ausführt
hier ist der code:

strcpy(buffer,(C_CHAR *) DSCP[0]); // \AFS
strcat(buffer,(C_CHAR *) DSCP[9]); // \SPRACHE
strcat(buffer,(C_CHAR *) DSCP[10]); // \
strcat(buffer,(C_CHAR *) usr_konfig.Sprache); //
GER,ENG,FRA,ITA

Das kann am PreProzessor liegen und hat wohl nix mit Win/Linux zu tun.
z.B. Ist ja ‚\r‘ die Codierung für ein CR (0x0D) und ‚\‘ = ‚‘, dies könnte der Grund sein, versuche mal ein Blank dazwischen zu schreiben. Ich hatte auch schon schöne Erlebnise, weil ein Komentar als Trigraph interpretiert wurde.

MfG Peter(TOO)

also wenn ich die vier zeilen im vc++ eingebe zeigt er mir die 4. zeile als kommentar an, weil ‚‘ (es reicht also schon ein backslash um dieses verhalten auszulösen) so interpretiert wird, daß die aktuelle zeile und die folgende als eine zeile interpretiert werden. und da die aktuelle zeile in dem fall bei dir mit einem kommentar endet wird die nächste als fortsetzung dieses kommentars interpretiert.
beim compilieren kriege ich sogar eine fehlermeldung: „single-line comment contains line-continuation character“.

Hallo Peter,

zuerst danke für die antwort.
warum wird die zeile in windows ganz normal ausgeführt und in linux nicht wenn es nicht mit win/linux zu tun hat?
das problem habe ich schon gelöst mit /* \ */ aber ich habe nicht wirklich kapiert warum die zeile nicht ausgeführt wurde.

youssef

vielleicht liegts am compiler, vc++ zumindest führt die zeile NICHT korrekt aus, sie läßt sich nicht mal kompilieren!

Hallo youssef,

zuerst danke für die antwort.
warum wird die zeile in windows ganz normal ausgeführt und in
linux nicht wenn es nicht mit win/linux zu tun hat?

Hast du mit dem gleichen Compiler unter Linux und unter Windows compiliert ??

MfG Peter(TOO)

hallo,
das bewundert mich dass, die zeile sich bei dir nicht compilieren lässt.
ich benutze auch vc++ 6 in windows und lässt sich die zeile copilieren und ausführen,
in linux , da es ein c++ programm wird mit g++ (GCC) 3.2 compiliert

youssef

also ich rede von den 4 oben genannten zeilen, nicht eine zeile einzeln!

Hallo youssef,

das bewundert mich dass, die zeile sich bei dir nicht
compilieren lässt.

Das hängt natürlich auch noch von den installierten ServicePacks und den Compilereinstellungen ab.

ich benutze auch vc++ 6 in windows und lässt sich die zeile
copilieren und ausführen,
in linux , da es ein c++ programm wird mit g++ (GCC) 3.2
compiliert

Wieso wunderst du dich, wenn sich 2 verschiedene Compiler von 2 verschiedenen Herstellern unterschiedlich verhalten ???

Gerade VC ist dafür bekannt, dass er sich nicht immer exakt an den Standard hällt.

MfG Peter(TOO)

Hi,

ich habe in einem c++ programm eine \ in commentar hinter
der anweisung:

[anweisung] // \

Das ist ein sog. ‚multiline comment‘, der
„Kommentar“ wird auch in der nächsten Zeile
fortgesetzt.

kann mir jemand das erklären

in der file handling in windows/linux(//,\…)

Das hat mit Linux/Windows nichts zu tun. Achtung:

// --- kommentartest.cxx ---
 #include 

 int main()
 {
 printf("1 - wir\n"); //\AFS
 printf("2 - haben das\n"); //\SPRACHE
 printf("3 - Problem\n"); // \\
 printf("4 - nicht\n"); // GER,ENG,FRA.ITA
 return 0;
 }
// -----------

Die tests:

  1. dos/win-gcc 3.2.3 (djgpp)

C:> kommentartest.exe
1 - wir
2 - haben das
3 - Problem

C:>

  1. Visual C++ 6/SP6

C:> kommentartest.exe
1 - wir
2 - haben das
3 - Problem

C:>

  1. Unix gcc 3.5.0

$server> ./kommentartest
1 - wir
2 - haben das
3 - Problem

$>server

Also, die Behandlung ist bei allen
von mir getesteten Systemen konsistent.

Hier die Warnungen der Compiler:

  1. (gcc/djgpp) comment.cxx:7:29: warning: multi-line comment

  2. (msvc++) e:\s\misc\comment\comment.cxx(8) : warning C4010:
    single-line comment contains line-continuation character

  3. (gcc 3.5.0) comment.cxx:7:25: warning: multi-line comment

Grüße

Euer CMБ

vielen danke an euch alle
danke

ich bin auch sehr dankbar für links zu der Thema: unterschiede
in der file handling in windows/linux(//,\…)

Unter windows kann man den Pfad im Code auf 2 mir bekannten Arten angeben. Entweder mit haufenweise ‚‘ oder einfach ‚/‘.
Also z.B. so, der Pfad wo 2000 Dateien rumfliegen:

/windows/system32

oder

\\windows\\system32

unter Linux funxioniert die erste Variante immer.

Li