Что означает a backslash in C++?
что делает этот код: (особенно, что делает обратную косую черту''? )
s23_foo +=
s8_foo * s16_bar;
Я добавил типы данных, потому что они могут быть актуальны. Спасибо за помощь.
2 ответов
Он позволяет вам продолжить оператор на следующую строку-как правило, вам нужно только внутри макроблока #define
символы обозначать две разные вещи в C++, в зависимости от контекста.
Как Продолжение Строки
вне строки кавычек (см. ниже), a \
используется в качестве символа продолжения строки. Новая строка, следующая в конце строки (невидимая), фактически игнорируется препроцессором, и следующая строка добавляется к текущей строке.
так:
s23_foo += \
s8_foo * s16_bar;
парсится as:
s23_foo += s8_foo * s16_bar;
линии продолжения могут быть нанизаны вместе. Это:
s23_foo += \
s8_foo * \
s16_bar;
становится этот:
s23_foo += s8_foo * s16_bar;
в C++ пробелы не имеют значения в большинстве контекстов, поэтому в этом конкретном примере продолжение строки не требуется. Это должно компилироваться просто отлично:
s23_foo +=
s8_foo * s16_bar;
и на самом деле может быть полезно, чтобы помочь разбить код на страницы, когда у вас есть длинная последовательность терминов.
так как препроцессор обработал #define
пока достигнута новая строка, продолжения строки наиболее полезны в определениях макросов. Например:
#define FOO() \
s23_foo += \
s8_foo * s16_bar;
без символа продолжения строки,FOO
здесь будет пусто.
Как Escape-Последовательность
в строке кавычек обратная косая черта используется в качестве разделителя для начала 2-символьной escape-последовательности. Например:
"hello\n"
в этом строковом литерале \
начинается escape-последовательность, с escape-кодом n
. \n
результаты в символ присутствует в строке. Это, конечно, означает, что если вы хотите, чтобы строка включала \
характер, вы должны избежать этого, а также:
"hello\there"
результаты в строке, как показано на экране:
привет\есть
различные escape-последовательности документированы здесь.