diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp
index 08b286a2bc16f8f4b9441d8fb899d4d5afb2e2a3..83b0d4191c8a7242ea04e4aa0523ce5196de0f2e 100644
--- a/src/libs/cplusplus/pp-engine.cpp
+++ b/src/libs/cplusplus/pp-engine.cpp
@@ -748,18 +748,8 @@ void Preprocessor::preprocess(const QByteArray &fileName, const QByteArray &sour
 
                 else {
                     if (! m->isFunctionLike()) {
-
-                        if (client)
-                            client->startExpandingMacro(identifierToken->offset,
-                                                        *m, spell);
-
-                        m->setHidden(true);
-                        const QByteArray tmp = expand(m->definition());
-                        m->setHidden(false);
-
-                        if (client)
-                            client->stopExpandingMacro(_dot->offset, *m);
-
+                        QByteArray tmp;
+                        expandObjectLikeMacro(identifierToken, spell, m, &tmp);
 
                         if (_dot->isNot(T_LPAREN)) {
                             _result->append(tmp);
@@ -827,6 +817,23 @@ void Preprocessor::preprocess(const QByteArray &fileName, const QByteArray &sour
     _result = previousResult;
 }
 
+void Preprocessor::expandObjectLikeMacro(TokenIterator identifierToken,
+                                         const QByteArray &spell,
+                                         Macro *m,
+                                         QByteArray *result)
+{
+    if (client)
+        client->startExpandingMacro(identifierToken->offset,
+                                    *m, spell);
+
+    m->setHidden(true);
+    expand(m->definition(), result);
+    m->setHidden(false);
+
+    if (client)
+        client->stopExpandingMacro(_dot->offset, *m);
+}
+
 void Preprocessor::expandFunctionLikeMacro(TokenIterator identifierToken, Macro *m)
 {
     const char *beginOfText = startOfToken(*identifierToken);
diff --git a/src/libs/cplusplus/pp-engine.h b/src/libs/cplusplus/pp-engine.h
index 49f332186559b9b2ef703b39d2139b44278bff83..9fc2d49a27679630128601501f8af277df2c6597 100644
--- a/src/libs/cplusplus/pp-engine.h
+++ b/src/libs/cplusplus/pp-engine.h
@@ -104,6 +104,9 @@ private:
     QByteArray expand(const QByteArray &source);
     void expand(const QByteArray &source, QByteArray *result);
     void expand(const char *first, const char *last, QByteArray *result);
+    void expandObjectLikeMacro(TokenIterator identifierToken,
+                               const QByteArray &spell,
+                               Macro *m, QByteArray *result);
     void expandFunctionLikeMacro(TokenIterator identifierToken, Macro *m);
 
     void resetIfLevel();