Кстати в Qt там нихрена не препроцессор. Там отдельная пристройка к языку и разворачиваются эти конструкции moc-процессором а не встроенным препроцессором. надеюсь я не открыл америку?
Товарищь Yurror поменьше агрессии и нападок и более внимательно читаем то что другие пишут:
По сути Qt это не совсем C++ это некоторый расширенный диалект поверх него, для реализации которого активно применяется кодогенерация и макросы.
Где слово "кодогенерация" подразумевает moc, uic, rcc и кажется у них что то для DBus модуля ещё плюсовый код генерит, но с последним мне пока не приходилось работать.
Я знаю как устроенно Qt и отлично знаю, что там где они могут обойтись без кодогенератора, они используют макросы. Причём это далеко не только маленькие обёртки упрощающие вызов какой нибудь шаблонной функции, это нередко то, что ты будешь использовать как ни крути при работе с Qt.
Не знаю, может я тут вам Америку открываю, но Q_OBJECT это тоже макрос, и это не пустышка как emit, а хрень добавляющая несколько вещей, имплементация которых и генерируется moc'ом
Ключевые макросы, которые используются в повседневной работе с Qt: forever, foreach вообще маскируются под нормальные конструкции языка.