Учитывая целое число времени компиляции (объект, а не макрос), могу ли я объединить его со строковым литералом во время компиляции, возможно с препроцессором?
Например, я могу объединять строковые литералы, просто помещая их рядом друг с другом:
bool do_stuff(std::string s);
//...
do_stuff("This error code is ridiculously long so I am going to split it onto "
"two lines!");
Отлично! Но что, если я добавлю целые константы в смесь:
const unsigned int BAD_EOF = 1;
const unsigned int BAD_FORMAT = 2;
const unsigned int FILE_END = 3;
Можно ли использовать препроцессор, чтобы каким-то образом связать это со строковыми литералами?
do_stuff("My error code is #" BAD_EOF "! I encountered an unexpected EOF!\n"
"This error code is ridiculously long so I am going to split it onto "
"three lines!");
Если это невозможно, могу ли я смешивать константные строки со строковыми литералами? То есть если бы мои коды ошибок были строками, а не беззнаками?
И если ни то, ни другое невозможно, каков самый короткий и чистый способ соединить это сочетание строковых литералов и числовых кодов ошибок?