C++ позволяет использовать области блоков, которые могут привести к созданию переменных с одинаковыми именами внутри одной функции, поэтому я не могу просто сделать:< /p>
Код: Выделить всё
#define MACRO(...) ConstevalHash(__PRETTY_FUNCTION__ #__VA_ARGS__)
int variable = 0;
printf("id %d \n", MACRO(variable));
Код: Выделить всё
printf("id %d \n", 345908340) // unique hash
РЕДАКТИРОВАТЬ:
Это решение проблемы со счетчиками времени компиляции.
Текущее решение:
Код: Выделить всё
#define MACRO(...) __VA_ARGS__.CachedID // static constexpr int CachedID ;
Var Variable = 0; // Id creates unique id using counter
MACRO(variable);
Об областях блоков
Код: Выделить всё
void Function()
{
{ int var = 0; MACRO(var); }
{ int var = 0; MACRO(var); }
}
while(true)
{
Function();
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... -variables