diff --git a/src/plugins/cpptools/rpp/pp-engine.cpp b/src/plugins/cpptools/rpp/pp-engine.cpp
index a061b2942a97141a11de81678ef00ab26f83a980..70e802c5497fde34ad03ca6df8f70bca3c83c392 100644
--- a/src/plugins/cpptools/rpp/pp-engine.cpp
+++ b/src/plugins/cpptools/rpp/pp-engine.cpp
@@ -585,15 +585,19 @@ void pp::operator()(const QByteArray &source, QByteArray *result)
                 } else {
                     if (! m->function_like) {
                         if (_dot->isNot(T_LPAREN)) {
+                            m->hidden = true;
                             expand(m->definition.constBegin(),
                                    m->definition.constEnd(),
                                    result);
+                            m->hidden = false;
                             continue;
                         } else {
                             QByteArray tmp;
+                            m->hidden = true;
                             expand(m->definition.constBegin(),
                                    m->definition.constEnd(),
                                    &tmp);
+                            m->hidden = false;
 
                             m = 0; // reset the active the macro
 
@@ -636,7 +640,9 @@ void pp::operator()(const QByteArray &source, QByteArray *result)
                         const char *beginOfText = startOfToken(*identifierToken);
                         const char *endOfText = endOfToken(*_dot);
                         ++_dot; // skip T_RPAREN
+                        m->hidden = true;
                         expand(beginOfText, endOfText, result);
+                        m->hidden = false;
                     }
                 }
             }