Пустые указатели полезны, когда вы пишете код, который должен работать в нескольких операционных системах и который должен быть достаточно независим от базовых API-интерфейсов.
Например, OS X, Windows и Linux имеют базовую концепцию оконного объекта, но все они очень разные. Итак, у меня есть общий код, который передает их как void *, а затем реализует платформы, которые приводят void * к собственному типу (HWND и т. Д.).
Но, да, как уже говорили другие в этой теме, такого рода вещи, безусловно, следует избегать, кроме случаев, когда это необходимо.