Может баян, но тем не менее. С радостью для себя обнаружил, что и msvc, и g++, и icc последних версий все поддерживают #pragma once. Поэтому если код не предполагается компилировать другими компиляторами, то можно с радостью забыть о include guard'ах. С чем всех и поздравляю.
Проверял на g++ 4.3.0 и icc 10.0.025. По поводу IBM и SUN, к сожалению, не знаю.
Ещё бы договорились по поводу прекомпилированных заголовков, и совсем стало бы хорошо. Сейчас только g++ отстаёт. За счёт чего и компилирует С++ код ужасно долго...
Здравствуйте, remark, Вы писали:
R>Ещё бы договорились по поводу прекомпилированных заголовков, и совсем стало бы хорошо. Сейчас только g++ отстаёт. За счёт чего и компилирует С++ код ужасно долго...
Здравствуйте, remark, Вы писали:
R>Может баян, но тем не менее. С радостью для себя обнаружил, что и msvc, и g++, и icc последних версий все поддерживают #pragma once. Поэтому если код не предполагается компилировать другими компиляторами, то можно с радостью забыть о include guard'ах. С чем всех и поздравляю. R>Проверял на g++ 4.3.0 и icc 10.0.025. По поводу IBM и SUN, к сожалению, не знаю.
R>Ещё бы договорились по поводу прекомпилированных заголовков, и совсем стало бы хорошо. Сейчас только g++ отстаёт. За счёт чего и компилирует С++ код ужасно долго...
R>
Здравствуйте, remark, Вы писали:
R>Здравствуйте, _nn_, Вы писали:
__>>Вот подумалось переносимый #pragma once
R>Я тоже о таком думал. Но проблема в том, что вместе с ним всё равно придётся писать include guard. Т.ч. смысл немного теряется.
R>
Не совсем.
Применение pragma once мне позволило в 2 раза сократить время компиляции проекта.
Так что нужно и то и другое использовать. Одно для переносимости, второе для скорости
Неплохо бы в буст добавить это: #pragma BOOST_ONCE
Здравствуйте, remark, Вы писали:
R>Может баян, но тем не менее. С радостью для себя обнаружил, что и msvc, и g++, и icc последних версий все поддерживают #pragma once. Поэтому если код не предполагается компилировать другими компиляторами, то можно с радостью забыть о include guard'ах. С чем всех и поздравляю. R>Проверял на g++ 4.3.0 и icc 10.0.025. По поводу IBM и SUN, к сожалению, не знаю.
R>Ещё бы договорились по поводу прекомпилированных заголовков, и совсем стало бы хорошо. Сейчас только g++ отстаёт. За счёт чего и компилирует С++ код ужасно долго...
R>
здесь пишется, что #pragma once поддерживается GCC с незопамятных времен.
Здравствуйте, remark, Вы писали:
R>Может баян, но тем не менее. С радостью для себя обнаружил, что и msvc, и g++, и icc последних версий все поддерживают #pragma once. Поэтому если код не предполагается компилировать другими компиляторами, то можно с радостью забыть о include guard'ах. С чем всех и поздравляю. R>Проверял на g++ 4.3.0 и icc 10.0.025. По поводу IBM и SUN, к сожалению, не знаю.
А я и то и другое юзаю. Гуарды обязательно, а once, если вспоминаю о нем и меня вдруг потянет начать оптимизировать ...
#if(COMP_CONF_SUPPORT_PRAGMA_ONCE)
# pragma once
#endif
R>
Ага
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Здравствуйте, remark, Вы писали:
R>Ещё бы договорились по поводу прекомпилированных заголовков, и совсем стало бы хорошо. Сейчас только g++ отстаёт. За счёт чего и компилирует С++ код ужасно долго...
Incredibuild не любит перкомпайл хедеры
Здравствуйте, IROV.., Вы писали:
R>>Ещё бы договорились по поводу прекомпилированных заголовков, и совсем стало бы хорошо. Сейчас только g++ отстаёт. За счёт чего и компилирует С++ код ужасно долго...
IRO>PCH — в топку!
С чего бы это вдруг?
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Здравствуйте, remark, Вы писали:
R>Ещё бы договорились по поводу прекомпилированных заголовков, и совсем стало бы хорошо. Сейчас только g++ отстаёт. За счёт чего и компилирует С++ код ужасно долго...
Здравствуйте, _nn_, Вы писали:
__>здесь пишется, что #pragma once поддерживается GCC с незопамятных времен.
А чо ж тогда люди вообще ещё помнят про include guard'ы? Неужели так много людей пишут под всякую экзотику...
Я периодически сталкиваюсь, что люди пишут под msvc+g++ и используют гуарды. Да даже только под msvc и всё равно...
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>А я и то и другое юзаю. Гуарды обязательно, а once, если вспоминаю о нем и меня вдруг потянет начать оптимизировать ... КД>
КД>#if(COMP_CONF_SUPPORT_PRAGMA_ONCE)
КД># pragma once
КД>#endif
КД>
Да я вот тоже подумал как же мне оформлять хидеры в новой библиотеке.
Думаю надо как-то так по-хорошему:
Здравствуйте, LuciferMoscow, Вы писали:
LM>Здравствуйте, remark, Вы писали:
R>>Ещё бы договорились по поводу прекомпилированных заголовков, и совсем стало бы хорошо. Сейчас только g++ отстаёт. За счёт чего и компилирует С++ код ужасно долго... LM>Incredibuild не любит перкомпайл хедеры
Здравствуйте, jazzer, Вы писали:
J>Здравствуйте, remark, Вы писали:
R>>Ещё бы договорились по поводу прекомпилированных заголовков, и совсем стало бы хорошо. Сейчас только g++ отстаёт. За счёт чего и компилирует С++ код ужасно долго...
J>почему отстает? В нем с версии 3.3 они есть
А примерчик можно? Как чо в каком файле писать и какие опции компилятора?
Я вот в документации несколько раз специально смотрел — в упор не видел ничего подобного. И pragma once тоже.
Здравствуйте, remark, Вы писали:
R>>>Ещё бы договорились по поводу прекомпилированных заголовков, и совсем стало бы хорошо. Сейчас только g++ отстаёт. За счёт чего и компилирует С++ код ужасно долго... LM>>Incredibuild не любит перкомпайл хедеры R>Что за зверь такой? R>
А гугл зачем?
Фигня, которая распределяет билд на много компов. Теперь я уже не знаю как без него работать
Здравствуйте, remark, Вы писали:
R>Здравствуйте, _nn_, Вы писали:
__>>здесь пишется, что #pragma once поддерживается GCC с незопамятных времен.
R>А чо ж тогда люди вообще ещё помнят про include guard'ы? Неужели так много людей пишут под всякую экзотику...
Ну как я понял хотели закрыть лавочку с pragma once. R>Я периодически сталкиваюсь, что люди пишут под msvc+g++ и используют гуарды. Да даже только под msvc и всё равно...
Есть причины: наследие Борладна и без этого нельзя проверять был ли файл подключен или нет.
R>
Здравствуйте, LuciferMoscow, Вы писали:
LM>Здравствуйте, remark, Вы писали:
R>>Ещё бы договорились по поводу прекомпилированных заголовков, и совсем стало бы хорошо. Сейчас только g++ отстаёт. За счёт чего и компилирует С++ код ужасно долго... LM>Incredibuild не любит перкомпайл хедеры
Что значит не любит? Если пользоваться с умом, то все хорошо.
Q: I'm using precompiled headers in my project. Does IncrediBuild support this? Is there anything I should be aware of regarding precompiled headers?
A: Yes, IncrediBuild supports projects using Precompiled Headers and will accelerate projects using PCHs. Specifically, "Automatic" PCHs have been known to slow down builds when used with IncrediBuild, and our recommendation if you are using automatic PCHs is to either switch to using a standard header-based PCH or disable PCHs altogether.
Precompiled headers
All files using a precompiled header will not start compiling before that precompiled header has been built. Note that if MSVC's default option of using a precompiled header was kept in your project, but stdafx.h is practically empty, it is recommended to remove stdafx.cpp from the project and set the project settings to "Not using precompiled headers".
Здравствуйте, remark, Вы писали:
R>Здравствуйте, LuciferMoscow, Вы писали:
LM>>Здравствуйте, remark, Вы писали:
R>>>Ещё бы договорились по поводу прекомпилированных заголовков, и совсем стало бы хорошо. Сейчас только g++ отстаёт. За счёт чего и компилирует С++ код ужасно долго... LM>>Incredibuild не любит перкомпайл хедеры
R>Что за зверь такой?
Аналог distcc. Вообще, если ты программируешь на с++ под win, то странно, что о нем не слышал.
R>
Здравствуйте, remark, Вы писали:
R>Здравствуйте, jazzer, Вы писали:
J>>Здравствуйте, remark, Вы писали:
R>>>Ещё бы договорились по поводу прекомпилированных заголовков, и совсем стало бы хорошо. Сейчас только g++ отстаёт. За счёт чего и компилирует С++ код ужасно долго...
J>>почему отстает? В нем с версии 3.3 они есть
R>А примерчик можно? Как чо в каком файле писать и какие опции компилятора? R>Я вот в документации несколько раз специально смотрел — в упор не видел ничего подобного. И pragma once тоже.
R>
Вот. Только вроде бы с версии 3.4 они там появились.