Which is equivalent, and does not trigger the rule, since it is clearer what the intention of the code is (i.e. there is no invisible but meaningful control character).
I still do not yet understand, how "...\ (and on next line) ..." would actually place any control characters into the string. Examining the strings of the compiled object seems to confirm my claim that no control char occurs in the string - am I missing other special cases?
Otoh., I fully understand, that literal tab-chars (and other control chars that really end up in the string) are addressed by the rule.
True, '\n' does not end in the binary. The problem is more like
const char* foo = "this is a \tab"
vs
const char* foo = "this is a \
tab"
Are not the same thing. The control character on the source (\n) is meaningful but not (arguably) visible.
Likewise, the problem with tab is that
const char *foo = "lorem itsum"
It is not immediately visible if there is a tab or four spaces. Hence, if it is a tab, it should be \t to be explicit.
So the spirit is more “what does another developer sees/hear(*)”, not so much what ends up on the binary.
(*) At least my system’s default screen reader reads "this is a \tab" as quote this is a backslash tab quote with and without a new line after the slash.