Сабж. Есть C99 (совместимость с компиляторами кроме gcc и clang не нужна, совместимость с libc кроме glibc — тоже); есть самописные мьютексы (mutex_t, mutex_lock(mutex_t *), mutex_unlock(mutex_t *)).
Хочется сделать автоматическое освобождение захваченного мьютекса при выходе из захватившей его функции (типа std::lock_guard в плюсах). Очевидное решение — локальная переменная с адресом мьютекса и __attribute__((cleanup(...))), но хочется сделать красивее, без лишних локальных переменных: ведь адрес мьютекса известен ещё на этапе компиляции.
Возможно?






