LINUX.ORG.RU

История изменений

Исправление PPP328, (текущая версия) :

Использовали в рабочем проекте:

/*! \brief Подписывает пользователя на требуемое событие
 * \param[in] name Имя события
 * \param[in] func Функция обратного вызова для этого события
 * \return Истина в случае успеха */
#define hrn_subscribe(name, func)                           \
    _hrn_subscribe(                                         \
        name,                                               \
        _Generic((func),                                    \
            hrn_callback_int        : HRN_CALLBACK_INT,     \
            hrn_callback_string     : HRN_CALLBACK_STRING,  \
            hrn_callback_json       : HRN_CALLBACK_JSON,    \
            hrn_callback_binary     : HRN_CALLBACK_BINARY,  \
            default                 : HRN_CALLBACK_NONE     \
        ),                                                  \
        func                                                \
    )

Без _Generic надо было бы передавать еще и тип.

Исходная версия PPP328, :

Использовали в рабочем проекте:

/*! \brief Подписывает пользователя на требуемое событие
 * \param[in] name Имя события
 * \param[in] func Функция обратного вызова для этого события
 * \return Истина в случае успеха */
#define hrn_subscribe(name, func)                           \
    _hrn_subscribe(                                         \
        name,                                               \
        _Generic((func),                                    \
            hrn_callback_int        : HRN_CALLBACK_INT,     \
            hrn_callback_string     : HRN_CALLBACK_STRING,  \
            hrn_callback_json       : HRN_CALLBACK_JSON,    \
            hrn_callback_binary     : HRN_CALLBACK_BINARY,  \
            default                 : HRN_CALLBACK_NONE     \
        ),                                                  \
        func                                                \
    )

Без _Generic была бы куча ифов.