Both string and bytes literals may optionally be prefixed with a letter ‘r’ or ‘R’; such strings are called raw strings and treat backslashes as literal characters.
Even in a raw literal, quotes can be escaped with a backslash, but the backslash remains in the result; for example, r""" is a valid string literal consisting of two characters: a backslash and a double quote; r"" is not a valid string literal (even a raw string cannot end in an odd number of backslashes). Specifically, a raw literal cannot end in a single backslash (since the backslash would escape the following quote character). Note also that a single backslash followed by a newline is interpreted as those two characters as part of the literal, not as a line continuation.
#include<stdio.h> intmain(){int O=__LINE__; #define OO putchar #define Oo * #define O0 + #define O00 - #define OOO / OO(O Oo O Oo O Oo (O O0 O OOO O) Oo (O O0 O OOO O)); OO(O Oo O Oo (O Oo O O0 O OOO O) Oo (O Oo O O0 O OOO O) O00 O O00 O OOO O); OO(O Oo O Oo O Oo O Oo (O Oo O Oo O O00 O OOO O)); OO(O Oo O Oo O Oo O Oo (O Oo O Oo O O00 O OOO O)); OO((O Oo (O O0 O O0 O) O00 O OOO O) Oo (O Oo (O O0 O O0 O) O00 O OOO O)); OO(O Oo O Oo O Oo O Oo O); OO((O Oo O Oo O O00 O OOO O) Oo (O Oo (O O0 O O0 O) O00 O OOO O)); OO(O Oo O Oo (O Oo O O0 O OOO O) Oo (O Oo O O0 O OOO O) O0 (O Oo (O O0 O O0 O) O00 O OOO O)); OO(O Oo O Oo (O Oo O O0 O OOO O) Oo (O Oo O O0 O OOO O) O0 (O Oo (O O0 O OOO O) Oo (O O0 O OOO O)) O00 O OOO O); OO((O Oo O O0 O OOO O) Oo (O Oo O Oo (O O0 O O0 O OOO O) O0 O O0 O OOO O)); OO(O Oo O Oo (O Oo O O0 O OOO O) Oo (O Oo O O0 O OOO O) O0 O OOO O); OO(O Oo O Oo O Oo O Oo O); OO((O O0 O OOO O) Oo (O O0 O OOO O) Oo O Oo (O O0 O O0 O OOO O) O00 O OOO O); OO(O Oo O Oo (O Oo O O0 O OOO O) Oo (O Oo O O0 O OOO O) O0 O OOO O); OO(O Oo O Oo (O Oo O O0 O OOO O) Oo (O Oo O O0 O OOO O) O00 O O00 O OOO O); OO((O Oo O O0 O OOO O) Oo (O Oo O Oo (O O0 O O0 O OOO O) O0 O O0 O OOO O) O00 O OOO O); OO(O Oo O Oo O Oo O Oo O O0 O OOO O); }