Все мои заголовочные файлы используют include guards, а также прагму Once:
#pragma once
#ifndef FILE_NAME_H
#define FILE_NAME_H
class foo
{
//foo interface..
};
#endif /* FILE_NAME_H */
Я понимаю, что pragma Onceне является стандартной и может не совпадать в разных компиляторах, но есть ли шанс, что она вызовет ошибку? Не лучше ли сначала как-то проверить, доступно ли оно?
#ifdef THIS_COMPILER_SUPPORTS_PRAGMA_ONCE
#pragma once
#endif
#ifndef FILE_NAME_H
#define FILE_NAME_H
class foo
{
//foo interface..
};
#endif /* FILE_NAME_H */
Я хочу предоставить pragma Onceв качестве опции для возможного ускорения компиляции и предотвращения конфликтов имен, при этом обеспечивая совместимость между компиляторами.