В проекте Visual Studio C ++ на основе NMake (.vcxproj) - автоматически создан для проекта LibreOffice для интеграции с IDE, мне нужно задать определение препроцессора (SRCDIR
), которое представляет собой строку, содержащую двойные кавычки "
.В .vcxproj это делается так:
<NMakePreprocessorDefinitions>_WIN32_WINNT=0x0601;SRCDIR="\"C:/lo/src/core\"";$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
, так что внутренние двойные кавычки правильно экранируются для использования в качестве строкового литерала C.
Но при попытке использовать SRCDIR
вкод C ++, как в
const size_t nStrLen(std::strlen(SRCDIR));
Я вижу эту проблему в IntelliSense:
#define SRCDIR "\\"C:/lo/src/core\\""
Expands to: "\\"C:/lo/src/core\\""
user-defined literal operator not found
Таким образом, IntelliSense явно экранирует обратную косую черту, разбивая строку.
Я должен упомянуть, что проект VS не используется для сборки модуля (используется консольная марка), поэтому я не вижу, не повреждена ли не только IntelliSense, но и сборка на основе VS.Но вопрос в том, как правильно настроить определение препроцессора следующим образом?