Вариант переключения C / C ++ для массивов символов

У меня есть несколько структур данных , каждый из которых имеет поле размером 4 байта.

Поскольку 4 байта равны 1 int на моей платформе, я хочу использовать их в case метках:

switch (* ((int*) &structure->id)) {
   case (* ((int*) "sqrt")): printf("its a sqrt!"); break;
   case (* ((int*) "log2")): printf("its a log2!"); break;
   case (((int) 'A')<<8 + (int) 'B'): printf("works somehow, but unreadable"); break;
   default: printf("unknown id");
}

Это приводит к ошибка компиляции, сообщая мне, что выражение case не сводится к int .

Как я могу использовать массивы char ограниченного размера и преобразовать их в числовые типы для использования в переключателе / case ?

7
задан a3f 18 April 2015 в 16:28
поделиться