В названии говорится все. У #pragma once
стандартизован для C++ 0x? Я не знаю компилятора, который не обеспечивает его реализацию, почти всегда одну и ту же семантику и имя.Разве `#pragma once` превращался в C++ 0x?
ответ
Все директивы #pragma
заставляют реализацию вести себя определенным образом.
Это не изменилось между C++ 03 и последней версией C++ 0x (n3225.pdf). Включить охранники - это переносная альтернатива.
Я знаю, что охранники - это переносная альтернатива, но я думал, что это может быть стандартизировано в любом случае. – Klaim
Обратите внимание, что последний черновик - n3225.pdf. –
@Prasoon: Так оно и есть. В моей защите «текущий проект» на веб-странице РГ21 не обновляется. http://www.open-std.org/jtc1/sc22/wg21/ –
Компилятор Sun C++ (Solaris) не реализует его. И нет, это не в черновиках C++ 0x.
+1 для информации. – Klaim
Это также тривиально реализовать с помощью #ifdef. Каков руководящий принцип для новой версии? Реализуйте все, что захотите, и кухонную раковину или просто дайте вам минимальные инструменты, чтобы сделать это сами?
Вам не хватает смысла. Большая часть сандалии заключается в том, чтобы сделать обычную практику минимальной для стандартных инструментов. Поскольку '#pragma once' предоставлен множеством компиляторов и оказался полезным. Было бы полезно использовать эквивалент ключевых слов, стандартизованный. – Klaim
включают в себя охранники, которые вынуждают вас выбирать имена в (одном и только глобальном) пространстве имен препроцессора. которая является болью. что большинство проектов нуждаются в макросах где-то, поэтому они имеют дело с проблемой выбора идентификаторов препроцессора, не вызывая конфликтов. тем не менее это боль, и я все еще вижу много кода #ifdef FILENAME_H. который является ARGH. В наиболее разумных проектах используется PROJECTNAME_FILENAME_SOMESUFFIX, который является OKish, но хорошо .... IMO # прагма - это просто лучшее решение. –
См. Это для [gotcha in '#pragma once'] (http://stackoverflow.com/questions/787533/is-pragma-once-a-safe-include-guard/1946730#1946730) – Motti
« Почти «? Вы отлично используете его в разных компиляторах, которые не относятся к нему одинаково? Или, какие другие имена вы знаете об этом? (Непонятно, к чему относится «почти», или оба?) –