Gli spazi nei nomi di file non presentano alcun problema, tranne quando lo sono. Il problema è che molte parti della toolchain di compilazione sono scriptate, spesso con più livelli di linguaggi di scripting e espansione variabile accatastati l'uno sull'altro.
L'esempio più importante è uno script di shell come parte di un Makefile, che è forse generato da un modello M4 (autotools ...), che può eseguire script di shell per determinare i percorsi. È possibile, ma abbastanza doloroso, gestire gli spazi correttamente nella shell POSIX in quasi tutte le circostanze: invece di foo $bar $baz
dovresti scrivere foo "$bar" "$baz"
. Generalmente non è possibile farlo nei Makefile. È estremamente complicato gestire lo spazio che sfugge correttamente su più livelli di linguaggi di scripting.
Quindi, se esiste la possibilità che il tuo programma sia compilato da un sistema di build basato su Makefile, non utilizzare spazi nei nomi dei file. Questo dovrebbe essere facile da fare poiché il nome del file dovrebbe indicare il contenuto del file e nella maggior parte degli linguaggi di programmazione gli identificatori non possono contenere spazi. In C ++, basta nominare il file dopo lo spazio dei nomi o la classe più importante che contiene.