Мне, например, не нравится этот подход, мое решение не переносимо, но я не планирую переносить его на любую другую платформу.
Я использую расширение #pragma once
IAR, которое заставляет компилятор включать этот файл только один раз, независимо от того, сколько раз он включен.
Вот пример, взятый из Wikepdia, о том, как он используется:
#pragma once
struct foo
{
int member;
};
Вместо:
#ifndef GRANDFATHER_H
#define GRANDFATHER_H
struct foo
{
int member;
};
#endif /* GRANDFATHER_H */
Я думаю, что это намного более чистый подход ...
Согласно Википедии , эта директива поддерживается также в
Clang, Comeau C / C ++, Digital Mars C ++, GCC, компилятор Intel C ++, Microsoft Visual Studio
Так что на практике это вполне переносимо ...:)