diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp
index e14a7e93b8af2d85cf9ef12133738fe55e59fb29..3f94652ee66c1d7eca9c8b2b09a6f053a7fe373c 100644
--- a/src/libs/cplusplus/pp-engine.cpp
+++ b/src/libs/cplusplus/pp-engine.cpp
@@ -810,8 +810,11 @@ bool Preprocessor::handleIdentifier(PPToken *tk)
     PPToken oldMarkerTk;
 
     if (macro->isFunctionLike()) {
-        if (!expandFunctionlikeMacros())
+        if (!expandFunctionlikeMacros()
+                // Still expand if this originally started with an object-like macro.
+                && m_state.m_expansionStatus != Expanding) {
             return false;
+        }
 
         // Collect individual tokens that form the macro arguments.
         QVector<QVector<PPToken> > allArgTks;