ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1054839
SciFi (24.11.2020 12:09, просмотров: 2753)
Творческая задачка. Можно ли на Си придумать такой макрос, который из строки "abcd" сделает константу, пригодную для использования в метках case, чтобы было как "case 0x61626364", ну или "case 0x64636261", индейцы не принципиальны? 

По буквам легко:

#define ABCD2INT(a,b,c,d) (((a)<<24)+((b)<<16)+((c)<<8)+(d))

case ABCD2INT('b', 'l', 'a', 'h'):

Было бы интересно вот так:

case STR2INT("blah"):


Вот тут намекают, что не получится:

https://stackoverflow.com/questions/16745895/switch-and-string-literal-characters-in-c

ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้