Ma to wpływ na preprocesor C i pozwala programistom na wyrażanie zależności plików w łatwy sposób, eliminując potrzebę ręcznego zarządzania.

Najczęstszą alternatywą dla #pragma once jest użycie #define do ustawienia makra chroniącego #include, którego nazwa jest wybierana przez programistę i jest unikalna dla danego pliku. Na przykład:#ifndef GRANDPARENT_H #define GRANDPARENT_H ... contents of grandparent.h #endif /* !GRANDPARENT_H */Takie podejście w minimalnym stopniu gwarantuje, że zawarty plik nie będzie uwzględniony więcej niż raz. Jest to bardziej szczegółowe, wymaga więcej pracy, oraz jest podatne na błędy programisty, ponieważ nie ma dostępnych dla kompilatora mechanizmów zapobiegających przypadkowemu użyciu tej samej nazwy makra w więcej niż jednym pliku, co spowodowałoby, że tylko jeden z plików byłby zawarty przez preprocesor. Takie błędy, pomimo że bardzo prawdopodobne jest ich wykrycie, ale mogą skomplikować raport o błędach kompilatora. Ponieważ sam preprocesor jest odpowiedzialny za #pragma once, programista nie może spowodować kolizji nazw.