Вот отличная причина , а не , чтобы сделать это.Следующая программа печатает «Это появится».
#include <iostream>
int main()
{
std::cout << "This "
// A comment ... \
<< "will appear"
// Another comment ... \
<< ", but this won't"
<< std::endl;
}
Почему?Потому что за первым \
следует пробел, и поэтому это просто часть комментария, , а не символ сращивания строк.Поведение программы может незаметно и значительно измениться из-за невидимого конечного пробела.
Еще лучшая причина не делать этого: g ++ ошибается, даже с -pedantic
.Когда я компилирую эту программу, используя g ++, вывод просто "This";завершающий пробел после первого \
игнорируется.По моему мнению, это должно работать, но это не то, что говорит языковой стандарт.(Сращивание строк происходит на этапе 2 перевода. Полагаю, можно утверждать, что завершающие пробелы можно было удалить на этапе 1, но я не уверен, что это правильный аргумент, и я не знаю, действительно ли авторы gccсделал такой аргумент.) В любом случае g ++ 4.5.2 и Sun CC версии 5.5 не согласуются друг с другом.
Если вы хотите многострочные комментарии, либо используйте /* ... */
, либо вставьте //
вначало каждой строки.Я предпочитаю последнее, потому что гораздо легче сказать, что данная строка является частью комментария.(На самом деле это несколько однострочных комментариев.) Любой приличный редактор должен позволять вам это делать, не набирая //
N раз для N строк.Или, если вы комментируете блок кода, используйте #if 0 ... #endif
.