Это можно сделать с помощью статического флага.
Когда функция вызывается, если флаг не установлен, установите его и продолжайте, иначе вернитесь сразу же.Затем в конце функции вы снимаете флажок, чтобы вы могли ввести его снова.
void funcA(void)
{
static int callback = 0;
if (callback) return;
callback = 1;
...
callback = 0;
}
Если вам нужно работать в нескольких потоках отдельно, вы можете объявить переменную как _Thread_local
вместо static
.