Я хочу, чтобы функция принимала строку перечисления и добавляла к этой строке суффикс, по сути, преобразовывая его в определяющую строку.
ACTION_PERMIT ---> ACTION_PERMIT_F
Есть ли способ сделать это? Или есть лучший способ выполнить это отображение?
typedef enum {
ACTION_PERMIT,
ACTION_DENY,
ACTION_COUNT,
ACTION_TC,
ACTION_REDIRECT
}action_e;
#define ACTION_PERMIT_F 1 << 0
#define ACTION_DENY_F 1 << 1
#define ACTION_COUNT_F 1 << 2
#define ACTION_TC_F 1 << 3
#define ACTION_REDIRECT_F 1 << 4
void rule_action_add(rule *rule, action_e action_type, uint32 value)
{
assert(rule != NULL);
action_t *action = &rule->action;
action->exist_map |= action_type; // <--- Use enum string and add "_F" suffix
}