Hmm. Il tuo codice funziona per me. Controlla i tuoi percorsi di inclusione, forse? Anche se si tratta di un'intestazione di sistema, dovrebbe essere piuttosto difficile perderla. Oppure hai accidentalmente compilato una versione che non aveva #include <ftw.h>
linea?
$ gcc -o ftw ftw.c
$ ./ftw my-directory
File 10
File 11
File 16
File 16
File 16
File 16
File 16
... etc ...
modifica :Il test di cui sopra è stato eseguito su Mac OS X. In un commento (ora cancellato) l'OP menzionava che era su Debian, per cui la pagina man menziona che #define _XOPEN_SOURCE 500
è necessario, come sottolinea Juliano.
Linux, per qualche motivo, utilizza ancora SUSv1 per questa API, dove nftw() è ancora considerata un'estensione.
Dalla pagina del manuale di Linux, l'include deve essere:
#define _XOPEN_SOURCE 500
#include <ftw.h>