Макрос для создания цепных цепей и IFSC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Макрос для создания цепных цепей и IFS

Сообщение Anonymous »

Использование макроса X, чтобы сохранить пару разных вещей в синхронизации, используя список предоставленного модуля. < /p>
Я сейчас делаю это: < /p>

Код: Выделить всё

if (0) {
// this will never run, and be compiled out
}
#define X(name) else if (some_thing == #name) { // do thing based on name... }
MY_LIST
#undef X
else {
// Report unrecognized string...
}
Но мне это кажется немного уродливым (я не большой поклонник незамеченного if (0) {} ).
Я думал об этом, используя оператор Switch ...

Код: Выделить всё

constexpr hash(const char* const str, size_t len, uint64_t init_value)
// implementation left to imagination of the reader)...

//...

switch(hash(some_thing, len(some_thing))) {
#define X(name) case hash(#name, const_len(#name)): { break; }
MY_LIST
#undef X
default:
{
good_thing = false;
break;
}
}
// Now that it has been validated as a good string... save it etc.
Но я беспокоюсь о столкновениях (столь же маловероятно, как столкновение).
Есть ли способ сделать цепочку if/els if (0) ?>

Подробнее здесь: https://stackoverflow.com/questions/793 ... d-else-ifs
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»