Drgt <[EMAIL PROTECTED]> writes: > It seems, that "#pragma once" isn't in ISO, and will never be, especially > because it is Microsoft (am I right ?) C extension. > (http://gcc.gnu.org/ml/gcc/2004-06/msg01887.html)
I believe that gcc was actually the first compiler to implement "#pragma once". It was added back in 1989 in gcc 1.35 by RMS. It is, perhaps, ironic that it is now considered to be a Microsoft extension. Then in 1991 RMS added support for automatically detecting when a header file puts all the non-comment text inside #ifndef/#define/ #endif. When that happens, and gcc sees another #include for the same header file, and the relevant macro is #defined, gcc will skip reading the header file entirely. That first appeared in gcc 2.0. Given that ability, RMS decided that there was no need to support #pragma once, and, since he doesn't like #pragma (or at least didn't at the time), he changed #pragma once at that time to issue an unavoidable warning. Note that #pragma once still worked; it just issued a warning. But #pragma once was still used in practice, so the warning was removed by Jason Merrill in 2003, for gcc 3.3. In short, #pragma once works fine today. What makes you think that it doesn't work? Ian