Немного туплю по этому поводу. Додумался вот до вот такого варианта:
Где "function" - наша хеширующая функция. Ну, к примеру:
В итоге получается что-то похожее:
Однако, строки все равно остаются и подсчет хэша происходит после появляения самой строки (насколько понимаю из-за механизма макроподстановки функций):
Может, есть более простые и действенные методы хеширования? Можно, конечно и без функции работать, а чисто на макросе, но тогда в моем понимании я буду очень ограничен. Благодарю!
C:
#define HASH_STRING(function, ...) (function)(__VA_ARGS__)
Где "function" - наша хеширующая функция. Ну, к примеру:
C:
int hashString(WCHAR *str) {
ULONG i = 0;
ULONG hash = 0;
while (i = *str++) {
hash = (i + (hash << 6) + (hash << 16) - hash) ^ 0xF0000000L;
}
return hash;
}
В итоге получается что-то похожее:
C:
#define Secret HASH_STRING(hashString, L"Hashed");
Однако, строки все равно остаются и подсчет хэша происходит после появляения самой строки (насколько понимаю из-за механизма макроподстановки функций):
Может, есть более простые и действенные методы хеширования? Можно, конечно и без функции работать, а чисто на макросе, но тогда в моем понимании я буду очень ограничен. Благодарю!