Я нашел это относительно того, как препроцессор C должен обрабатывать конкатенацию строковых литералов (фаза 6). Однако я не могу найти ничего относительно того, как это обрабатывается в C ++ (использует ли C ++ препроцессор C ?).
Причина, по которой я спрашиваю, состоит в следующем:
const char * Foo::encoding = "\0" "1234567890\0abcdefg";
где encoding
- статический член класса Foo
. Без наличия конкатенации я не смог бы написать такую последовательность символов, как эта.
const char * Foo::encoding = "\01234567890\0abcdefg";
Это нечто совершенно иное из-за того, как интерпретируется \012
.
У меня нет доступа к нескольким платформам, и мне любопытно, насколько я уверен в том, что вышеизложенное всегда обрабатывается правильно - то есть я всегда получу { 0, '1', '2', '3', ... }