| /* No escape */ |
| #define MESSAGE1 "@var1@" |
| |
| /* Escaped whole variable */ |
| #define MESSAGE2 "\\@var1\\@" |
| |
| /* Replace pairs of escapes before '@' or '\@' with escape characters |
| * (note we have to double number of pairs due to C string escaping) |
| */ |
| #define MESSAGE3 "\\\\@var1@" |
| |
| /* Pairs of escapes and then an escaped variable */ |
| #define MESSAGE4 "\\\\\@var1\@" |
| |
| /* We don't gobble \@ prefixing some text */ |
| #define MESSAGE5 "\\\\@var1" |
| |
| /* Check escape character outside variables |
| \ @ \@ */ |
| #define MESSAGE6 "\\ @ \\\\@" |
| |
| /* Catch any edge cases */ |
| |
| /* no substitution - not a variable */ |
| #define MESSAGE7 "@var1" |
| |
| /* Escaped variable followed by another variable */ |
| #define MESSAGE8 "\\\\@var1@var2@" |
| |
| /* Variable followed by another variable */ |
| #define MESSAGE9 "@var1@var2@" |
| |
| /* Variable followed by another variable and escaped */ |
| #define MESSAGE10 "@var1@var2\\\\@" |
| |
| /* Lots of substitutions in a row*/ |
| #define MESSAGE11 "@var1@@var2@@var3@@var4@" |
| |
| /* This should never happen in the real world, right? */ |
| #define MESSAGE12 "@var1@var2\\\\@var3@var4\\\\@" |