#c
Вопрос:
У меня есть необработанный строковый литерал:
const char* s1 = R"foo(
Hello
World
)foo";
Я хотел бы добавить комментарий внутри этого строкового литерала, например:
const char* s1 = R"foo(
Hello
// Say hello to the whole world because we don't know who will run the program.
World
)foo";
Этот комментарий фактически используется как часть строки. Есть ли какой-либо способ избежать этого комментария, который будет проанализирован как фактический комментарий (или это противоречит цели необработанной строки)?
Очевидно, я могу делать уродливые вещи, например, разделять строку надвое, добавлять комментарий между двумя частями и объединять их, но я ищу что-то более элегантное.
Комментарии:
1. нет, вы не можете поместить комментарий внутри любого строкового литерала, хотя соседние строковые литералы автоматически объединяются
2. Поместите комментарий до , после строки или разделите строку.
Ответ №1:
Я думаю, что самое близкое — это «избежать этого» с помощью разделителей конца и начала необработанной строки:
const char* s1 = R"foo(
Hello)foo"
// Say hello to the whole world because we don't know who will run the program.
R"foo(
World
)foo";
Комментарии:
1. Это теряет новую грань между приветом и миром. Вам нужно будет добавить его (и это одна из причин, по которой я счел это решение нежелательным, поскольку оно вводит небольшие труднодоступные ошибки, подобные этому).
2. @Jarod42 и Бенджикесслер. Спасибо, что указали на это. Я изменил ответ, чтобы имитировать точную строку. Вывод по-прежнему заключается в том, что я думаю, что это наименее плохой ответ с учетом ограничений грамматики C .
3. @BenjyKessler: Я бы сказал, что это разбиение необработанной строки, которое
n
может быть легко опущено, с"n" "Hellon" /* some comment */ " Worldn"
eol более явно.