Здравствуйте, гость ( Вход | Регистрация )
DIMEDROLL | Дата 27.11.2009, 21:34 |
подстановку тела макроса, а телом является строка: Q_DECLARE_INTERFACE(IFace, IId), в которую препроцессор ещё воткнёт аргументы и того получим: Q_DECLARE_INTERFACE(IFace, IId) тогда будет ошибка: идентификатор Q_DECLARE_INTERFACE не найден, вот код:
error C3861: 'EQUAL': identifier not found ошибка же и тогда если закоментировать первую строку updated: Глянул в исходниках кьют, теперь понятно макрос то был не просто обьявлен, а с ифдефом тоже:
Тоесть как правильно было сказано во втором посте, максрос
предназначен для MOC компилятора(или препроцессора, как там его называют...) |
|
Litkevich Yuriy | Дата 27.11.2009, 20:52 |
Если определен, то что получим? подстановку тела макроса, а телом является строка:Q_DECLARE_INTERFACE(IFace, IId), в которую препроцессор ещё воткнёт аргументы и того получим: Q_DECLARE_INTERFACE(IFace, IId) |
|
DIMEDROLL | Дата 27.11.2009, 20:32 |
DIMEDROLL, когда работает препроцессор, то он вместо макроса подставлет его тело, если тела нет, то он ничего неподставит, т.е. Да, я представляю как работает препроцессор. Но судя по коду идет так:
Выходит что если Q_MOC_RUN НЕ определен, то получим шаблон. Если определен, то что получим? |
|
Litkevich Yuriy | Дата 27.11.2009, 20:21 |
DIMEDROLL, когда работает препроцессор, то он вместо макроса подставлет его тело, если тела нет, то он ничего неподставит, т.е. До препроцессора было: после перпроцессора
|
|
niXman | Дата 27.11.2009, 19:39 |
Почему не написать так Спроси у троллей. |
|
DIMEDROLL | Дата 27.11.2009, 19:17 |
Просто вместо макроса будет подставлен он же (это используется для обработки MOC'ом, что видно из окружающего дефайна) А зачем его тогда вообще дефайнить если он уже продефайнен? Что будет если его непродефайнить? Как заработать миллион? :-) Почему не написать так:
|
|
Litkevich Yuriy | Дата 27.11.2009, 18:58 |
Просто вместо макроса будет подставлен он же (это используется для обработки MOC'ом, что видно из окружающего дефайна) А если MOC не запущен (т.е. файл обрабатывает не он), то будет так:
|
|
hkarel | Дата 27.11.2009, 16:10 |
Здравствуйте. Изучая потроха Qt наткнулся на такую запись:
Вопрос: зачем в теле макроса повторять его наименование? Какой а этом смысл? Почему бы просто не записать
? |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 2:32 |