GNU CPP supports two more ways of indicating that a header file should be
read only once. Neither one is as portable as a wrapper
and we recommend you do not use them in new programs.
In the Objective-C language, there is a variant of
#import which includes a file, but does so at most once.
If you use
#import instead of
#include, then you don't
need the conditionals inside the header file to prevent multiple
inclusion of the contents. GCC permits the use of
#import in C
and C++ as well as Objective-C. However, it is not in standard C or C++
and should therefore not be used by portable programs.
#import is not a well designed feature. It requires the users of
a header file to know that it should only be included once. It is much
better for the header file's implementor to write the file so that users
don't need to know this. Using a wrapper
In the present implementation, a single use of
prevent the file from ever being read again, by either
#include. You should not rely on this; do not use both
#include to refer to the same header file.
Another way to prevent a header file from being included more than once
is with the
#pragma once directive. If
#pragma once is
seen when scanning a header file, that file will never be read again, no
#pragma once does not have the problems that
but it is not recognized by all preprocessors, so you cannot rely on it
in a portable program.