Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: Sergeich от Сентябрь 04, 2007, 14:14



Название: [Qt 3.3.8] Неправильная работа moc
Отправлено: Sergeich от Сентябрь 04, 2007, 14:14
Столкнулся с тем, что moc неправильно обрабатывает выражения вида:
Код:
template class QMap<int, QObject*>;
пишет, что в этой строке ошибка в синтаксисе  >:( Я использую
Код:
template class __declspec(dllexport) QMap<int, QObject*>;
чтобы устранять ворнинги типа
Код:
warning C4251: 'Foo::data' : class 'QMap<Key,T>' needs to have dll-interface to be used by clients of class 'Foo'
        with
        [
            Key=int,
            T=QObject *
        ]
В связи с этим два вопроса:
1) Устранена ли эта проблема в Qt 4.x.x?
2) Есть ли какие-нибудь макросы, чтобы moc не обработатывал кусок кода?


Название: Re: [Qt 3.3.8] Неправильная работа moc
Отправлено: vaprele07 от Сентябрь 04, 2007, 14:34
Using the Meta-Object Compiler (moc)
Цитировать
You can explicitly tell the moc not to parse parts of a header file. moc defines the preprocessor symbol Q_MOC_RUN. Any code surrounded by
 #ifndef Q_MOC_RUN
     ...
 #endif


Название: Re: [Qt 3.3.8] Неправильная работа moc
Отправлено: Sergeich от Сентябрь 04, 2007, 15:03
Мда... ассистант наше все :) Спасибо! Нарисовал
Код:
//MOC_SKIP_BEGIN
template class FOO_EXPORT QMap<int, QObject*>;
//MOC_SKIP_END
и все заработало :)
Но все-таки, в 4-ке moc ругается на такие выражения?