HASH_ITER运行解释

uthash.h中的宏HASH_ITER的参数讲解?以及如何运行,实现迭代?如何配合HASH_DEL完成迭代删除操作?

HASH_ITER(hh, USER, s, tm) 
{
        HASH_DEL(USER,s);
        free(s);
}

力扣49题一个题解的部分代码:

    HASH_ITER(hh, USER, s, tm) 
    {
        res[s->rsz] = (char**)malloc(sizeof(char*) * (s->cnt));     //为每一行字符串指针分配空间
        for (int j = 0; j < s->cnt; j++)
        {
            res[s->rsz][j] = strs[s->index[j]];
        }
        (*returnColumnSizes)[s->rsz] = s->cnt;  //每行的单词数量就是该节点出现的次数
        HASH_DEL(USER,s);
        free(s);
    }   

看了半天不知道怎么实现的
在迭代中,s和tm怎么变换的?