#pragma once appears to be undocumented http://gcc.gnu.org/onlinedocs/gcc-4.5.2/gcc/Pragmas.html
At one point it was documented in the C preprocessor manual but it is no longer documented there.
Confirmed really it is documented but just under #import documentation. It really should be under its own: Another way to prevent a header file from being included more than once is with the @samp{#pragma once} directive. If @samp{#pragma once} is seen when scanning a header file, that file will never be read again, no matter what. @samp{#pragma once} does not have the problems that @samp{#import} does, but it is not recognized by all preprocessors, so you cannot rely on it in a portable program.