Я нашел это в некотором коде C ++ _ 11:
L"DLGCTRL_"L#dialog_control_id
Что такое «L #» здесь? Там нет оператора # или конкатенации так.
Да, между «и Л.» ничего нет. Как это можно допустить?
Я получаю ошибку:
ошибка C3688: неверный литеральный суффикс ‘L’; литеральный оператор или шаблон буквального оператора ‘operator «» L’ не найден
У меня Visual Studio 2015 и 2017 на Windows 10.
Обычно компилируется на C ++ 98 или 00
Я предполагаю, что это происходит внутри макроса препроцессора, иначе вопрос вообще не имеет смысла, например:
#define X(dialog_control_id) L"DLGCTRL_"L#dialog_control_id
где предполагается, что X(foo)
расширяется до L"DLGCTRL_foo"
,
Код должен быть:
#define X(dialog_control_id) L"DLGCTRL_" #dialog_control_id
В исходном коде есть несколько проблем:
L#
не допускается в ISO C ++, это расширение препроцессора Microsoft для создания широкого строкового литерала.L
в любом случае никогда не было необходимости, потому что широкий строковый литерал может быть соединен с узким строковым литералом (производя широкий строковый литерал)Других решений пока нет …