diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index 468c408adf5..cd3d4afb561 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -621,15 +621,22 @@ Macros MsvcToolChain::msvcPredefinedMacros(const QStringList &cxxflags, Macros predefinedMacros; QStringList toProcess; - for (const QString &arg : cxxflags) { - if (arg.startsWith("/D") || arg.startsWith("-D")) { - const QString define = arg.mid(2); - predefinedMacros.append(Macro::fromKeyValue(define)); - } else if (arg.startsWith("/U") || arg.startsWith("-U")) { - predefinedMacros.append( - {arg.mid(2).toLocal8Bit(), ProjectExplorer::MacroType::Undefine}); + for (auto arg = cxxflags.begin(); arg != cxxflags.end(); ++arg) { + if (arg->startsWith("/D") || arg->startsWith("-D")) { + if (arg->length() > 2) + predefinedMacros.append(Macro::fromKeyValue(arg->mid(2))); + else if (std::next(arg) != cxxflags.end()) + predefinedMacros.append(Macro::fromKeyValue(*++arg)); + } else if (arg->startsWith("/U") || arg->startsWith("-U")) { + if (arg->length() > 2) { + predefinedMacros.append({arg->mid(2).toLocal8Bit(), + MacroType::Undefine}); + } else if (std::next(arg) != cxxflags.end()) { + predefinedMacros.append({(++arg)->toLocal8Bit(), + MacroType::Undefine}); + } } else { - toProcess.append(arg); + toProcess.append(*arg); } }