Название: Как работает интерпретатор когда встречает emit ? Отправлено: neosapient от Октябрь 29, 2008, 15:40 Добрый день.
Не могу понять, как работает интерпретатор когда встречает emit. Где то должен быть #define ? Или модуль moc вообще всё подменяет ? Другими словами: можно ли самому организовать "оповещение", как это делается командой emit ? Название: Re: Как работает интерпретатор когда встречает emit ? Отправлено: ритт от Октябрь 29, 2008, 16:01 invokeMethod
Название: Re: Как работает интерпретатор когда встречает emit ? Отправлено: Rcus от Октябрь 29, 2008, 16:30 emit(Q_EMIT) это просто пустой макрос чтобы отличать вызовы методов от сигналов, вся магия заключена в moc_*.cpp, там находится реализация сигналов и таблица метаинформации для класса, moc генерит подобные вещи для всех встреченных классов с макросом Q_OBJECT
Название: Re: Как работает интерпретатор когда встречает emit ? Отправлено: SASA от Октябрь 29, 2008, 17:13 emit(Q_EMIT) это просто пустой макрос чтобы отличать вызовы методов от сигналов. Всегда мучили вопросы: "А заканчиваются ли на этом функции emit? А может в следующей версии Qt без emit и работать перестанет?" Название: Re: Как работает интерпретатор когда встречает emit ? Отправлено: Rcus от Октябрь 29, 2008, 17:32 Всегда мучили вопросы: "А заканчиваются ли на этом функции emit? А может в следующей версии Qt без emit и работать перестанет?" У Qt лучшая документация, если там чего-то нет значит это не входит в контракт интерфейса и является деталью реализации. В Old New Thing подробно рассказывается о контракте интерфейса, если надо почитаетеНазвание: Re: Как работает интерпретатор когда встречает emit ? Отправлено: pastor от Октябрь 29, 2008, 17:51 ихо, emit служит для наглядности да и только
Название: Re: Как работает интерпретатор когда встречает emit ? Отправлено: SASA от Ноябрь 01, 2008, 15:38 У Qt лучшая документация, если там чего-то нет значит это не входит в контракт интерфейса и является деталью реализации. В Old New Thing подробно рассказывается о контракте интерфейса, если надо почитаете А что такое контракт интерфейса, и где читать Old New Thing?Заранее спасибо. Название: Re: Как работает интерпретатор когда встречает emit ? Отправлено: Rcus от Ноябрь 01, 2008, 21:08 http://en.wikipedia.org/wiki/Contract_programming
А The Old New Thing это блог Raymond Chen, человека знающего почему работает Windows, вот интересный пример: http://blogs.msdn.com/oldnewthing/archive/2008/09/25/8965129.aspx (title:Even if a function doesn't do anything, you still have to call it if the documentation says so, because it might do something tomorrow) |