Что означает 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-последовательности документированы здесь.