Как уже отмечалось, TDD сам по себе не привязан к ООП. Однако на практике это связано с модульностью. Каждый юнит-тест должен тестировать только очень ограниченную часть программы, поэтому, если у вас много общего состояния, вам будет практически невозможно выполнить юнит-тестирование программы.
Определенно можно писать модульные программы на C, но это требует разных техник. TDD может вынудить вас написать модульную программу, но это также может остановить разработку, если вы не привыкли писать модульные C-программы.