Назначение IF, ELSE, FOR макросов? - PullRequest
4 голосов
/ 07 мая 2010

У меня есть исходный код библиотеки, в которой есть много странных макросов IF, ELSE, FOR и т. Д. Для всех распространенных ключевых слов C вместо использования обычных слов if, else, for, while. Эти макросы определены так:

 #define IF( a) if( increment_if(), a)

где функция increment_if () определена так:

static __inline void increment_if( void) {
    // If the "IF" operator comes just after an "ELSE", its counter
    // must not be incremented.
    ... //implementation
}

Я не очень понимаю, какова цель таких макросов? Эта библиотека предназначена для приложений реального времени, и я предполагаю, что использование таких макросов должно замедлять работу приложения.

1 Ответ

10 голосов
/ 07 мая 2010

Эти макросы будут иметь две версии, одна из которых будет простым оператором if, а другая - количество выполнений этого оператора. Причиной этого является составление статистики профилирования. Если вы подсчитываете количество выполнений каждого блока кода, вы можете учитывать количество времени, которое требуется каждому.

В приложении реального времени гораздо важнее, чтобы время каждой операции было предсказуемым, чтобы вы могли рассчитать, соответствует ли приложение его срокам. На самом деле недостаточно просто быть быстрым, пока соблюдаются сроки, вот и все, что требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...