Обсуждение:Pragma once
Эта статья тематически связана с вики-проектом «Информационные технологии», цель которого — создание и улучшение статей по темам, связанным с информационными технологиями. Вы можете её отредактировать, а также присоединиться к проекту, принять участие в его обсуждении и поработать над требуемыми статьями. |
Untitled
[править код]При просмотре исходников библиотеки Boost, наблюдал подобный код:
#ifndef GRANDFATHER_H
#define GRANDFATHER_H
#if defined(_MSC_VER) && (_MSC_VER>=1020)
#pragma once
#endif
struct foo {
int member;
};
#endif /* GRANDFATHER_H */
Может стоит заменить на него пример для совместного использования #pragma once
и Include guard? Просто сам никогда такой конструкцией не пользовался, по этому не знаю, к чему она может привести. А Boost все-таки, как мне кажется, показатель.
gemza 07:44, 24 июня 2009 (UTC)
Примечание:
_MSC_VER
Evaluates to the major and minor number components of the compiler's version number. The major number is the first component of the period-delimited version number and the minor number is the second component.
For example, if the version number of the Visual C++ compiler is 15.00.20706.01, the _MSC_VER macro evaluates to 1500.
In Visual Studio 2010, _MSC_VER is defined as 1600.
Т.о., предиректива _MSC_VER применяется только к версиям Visual Studio выше 1000
источник - http://msdn.microsoft.com/en-us/library/b0084kay.aspx
94.51.194.224 05:33, 1 июля 2011 (UTC) sanyok09
- В данном контексте применение директивы #pragma once почти бесполезно: при повторном включении она будет обработана только в том случае, если после первого включения переменная GRANDFATHER_H была отменена директивой #undef. Соответственно, роли в предотвращении повторного включении файла играть почти не будет. Tolic lich (обс.) 11:02, 14 августа 2018 (UTC)