Ungültige Escape Sequenz- eigentlich sieht alles richtig aus



  • Ich bekomme hier beim Kompilieren die Fehlermeldung "Ungültige Escape Sequenz",
    kann mir aber nicht erklären, warum. Vielleicht bin ich ja blind...

    const char VShader[] =
             "vs.1.1                 \n"\
             "dcl_position0 v0       \n"\
             "dcl_normal0   v3       \n"\
             "dcl_texcoord0 v6       \n"\
             "m4x4 oPos, v0, c0      \n"\
             "mov oD0, c4            \n"\
             "mov oT0, v6            \n"\
    	 "mov oT1, v6		 \n"\		//Die angebl. falsche Escape Seq.
    	 "dp3 oD1, v3, -c20	 \n";
    

    😕



  • Die Backslashes am Zeilenende brauchst du so nur bei Präprozessordirektiven.



  • irr ich mich, oder muss das nicht so geschrieben werden?

    const char* VShader[] ={
             "vs.1.1                 \n",
             "dcl_position0 v0       \n",
             "dcl_normal0   v3       \n",
             "dcl_texcoord0 v6       \n",
             "m4x4 oPos, v0, c0      \n",
             "mov oD0, c4            \n",
             "mov oT0, v6            \n"
             "mov oT1, v6            \n",
             "dp3 oD1, v3, -c20      \n"
        };
    


  • otze schrieb:

    irr ich mich, oder muss das nicht so geschrieben werden?

    Kommt drauf an, was er will. Wenn alles in einen String soll, müssen nur die \ am Ende der Zeilen weg.



  • Das ist eigentlich ein Vertexshader, was eigentlich mehr was für die Grafikprogrammierung ist. Der wird beim Programmstart kompiliert und ist in einer Art Assembler für die GPUs geschrieben. So viel zum Hintergrund.

    Aber was mich wundert ist halt dass folgendes akzeptiert wird:

    const char VShader[] =
             "vs.1.1                 \n"\
             "dcl_position0 v0       \n"\
             "dcl_normal0   v3       \n"\
             "dcl_texcoord0 v6       \n"\
             "m4x4 oPos, v0, c0      \n"\
             "mov oD0, c4            \n"\
             "mov oT0, v6            \n"\
    	 "mov oT1, v6		 \n";
    

    deswegen ja meine allgemeine Verwirrung.



  • Physikalischer Fehler schrieb:

    Aber was mich wundert ist halt dass folgendes akzeptiert wird:

    Warum sollte das nicht akzeptiert werden? Backslash und Zeilenumbruch ist eine gültige Escapesequenz, außerhalb von Stringliteralen. Backslash und Leerzeichen hingegen nicht.

    in\
    t ma\
    in(){retur\
    n 0;}
    


  • nein, ich sehe den Unterschied zu dem akzeptierten und dem nicht- akzeptierten einfach nicht.



  • Der Unterschied ist der, dass hier der Backslash nicht am Zeilenende, sondern vor einem Leerzeichen steht:

    Physikalischer Fehler schrieb:

    "mov oT1, v6		 \n"\		//Die angebl. falsche Escape Seq.
    

Anmelden zum Antworten