# include <stdio.h>
# include <string>
/*
[tswitch( T , V )]
T - тип перебора.
V - значение с которым сравниваем.
*/
# define tswitch( T , V )\
if( int __tswitch_check = 0 );\
else for(\
const T &__tswitch_value(V);\
__tswitch_check == 0;\
++__tswitch_check )\
{int __tswitch_open = 0;
# define tcase( D )\
}if( __tswitch_open || __tswitch_value == D ){__tswitch_open = 1;
# define tdefault break;__tswitch_open = 0;};
# define tbreak break;__tswitch_open = 0;
void main()
{
std::string name = "True";
tswitch(std::string, name)
{
tcase("True")
tcase("Vasya")
{
printf("fff");
}tbreak;
tcase("Guull")
printf("ggg");
tbreak;
tdefault
printf("dds");
}
}
Вот выставил на критику..
Имеет ли это шанс на жизнь?
Есть ограничение.. =(
tdefault
printf("dds");
tdefault Обязателен.. и обязательно в конце! =)
А так кажеться.. все ок. =)
З.Ы. Есть вариант где можно перебрать масивы. ([],STL)
FOR_EACH(_Winnie) + tswitch(IROV..) = tforswitch;