Unrecognized escape sequences in string literals
Steven D'Aprano
steven at REMOVE.THIS.cybersource.com.au
Wed Aug 12 03:36:56 EDT 2009
On Tue, 11 Aug 2009 13:20:52 -0700, Douglas Alan wrote:
> On Aug 11, 2:00 pm, Steven D'Aprano <st... at REMOVE-THIS-
> cybersource.com.au> wrote:
>
>> > test.cpp:1:1: warning: unknown escape sequence '\y'
>>
>> Isn't that a warning, not a fatal error? So what does temp contain?
>
> My "Annotated C++ Reference Manual" is packed, and surprisingly in
> Stroustrup's Third Edition, there is no mention of the issue in the
> entire 1,000 pages. But Microsoft to the rescue:
>
> If you want a backslash character to appear within a string, you
> must type two backslashes (\\)
>
> (From http://msdn.microsoft.com/en-us/library/69ze775t.aspx)
Should I assume that Microsoft's C++ compiler treats it as an error, not
a warning? Or is is this *still* undefined behaviour, and MS C++ compiler
will happily compile "ab\cd" whatever it feels like?
> The question of what any specific C++ does if you ignore the warning is
> irrelevant, as such behavior in C++ is almost *always* undefined. Hence
> the warning.
So a C++ compiler which follows Python's behaviour would be behaving
within the language specifications.
I note that the bash shell, which claims to follow C semantics, also does
what Python does:
$ echo $'a s\trin\g with escapes'
a s rin\g with escapes
Explain to me again why we're treating underspecified C++ semantics,
which may or may not do *exactly* what Python does, as if it were the One
True Way of treating escape sequences?
--
Steven
More information about the Python-list
mailing list