Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: #pragma once  (Прочитано 21751 раз)
0 Пользователей и 7 Гостей смотрят эту тему.
Mfcer__
Команда клуба

ru
Offline Offline

« : 20-11-2003 19:33 » 

Что значит директива процессора
#pragma once?
Спасибо. Только можно объяснить попонятней плз.  Ага
Записан
Serega
Гость
« Ответ #1 : 20-11-2003 19:40 » 

Это что бы хидер не инклудился несколько раз

раньше использовали такую конструкцию:

#ifndef _MY_HEADER_ALLREADY_INCLUDED_
#define _MY_HEADER_ALLREADY_INCLUDED_

...

#endif

а теперь можно просто писать #pragma once в начале файла

на форуме такая штука описана в теме "Помогите понять..."
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 20-11-2003 22:26 » 

А это стандартная фича, или только для vc?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
grozny
Гость
« Ответ #3 : 21-11-2003 06:16 » 

не, нестандартная - это ж прагма - что по определению есть компиляторно-зависимая фича Жаль. А я бы в стандарт внёс.
Записан
Asan
Гость
« Ответ #4 : 21-11-2003 06:45 » 

Кроме того, #pragma once заставляет компилятор просматривать файл только один раз, что может уменьшить время компиляции.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 21-11-2003 10:37 » 

Может это и удобно, но когда я беру чужие исходники, а в readme написано что мне нужен новый компилятор, то понимаешь условность таких удобностей. Программист должен помнить, что пишет не только для себя. Ага Тем более если распространяет исходники.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Asan
Гость
« Ответ #6 : 21-11-2003 11:26 » 

Вроде по стандарту компилятор должен игнорировать неизвесные прагмы.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 21-11-2003 12:12 » 

Да, но если "скобки" из ifndef/define/endif заменили на pragma once?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Asan
Гость
« Ответ #8 : 21-11-2003 12:34 » 

Цитата: RXL
Да, но если "скобки" из ifndef/define/endif заменили на pragma once?


Тогда конечно.  Лучше их вместе использовать.
Записан
Sashok
Молодой специалист

us
Offline Offline
Пол: Мужской

« Ответ #9 : 21-11-2003 17:08 » 

А я вообще не злоупотребляю #pragma. Для "замка" ставлю только #ifndef-#define-#endif
Записан

Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #10 : 21-11-2003 17:39 » 

Sashok, и я тоже - проще , понятнее нагляднее...
Привычнее наконец  Ага
Записан

А птичку нашу прошу не обижать!!!
piterbyr
Гость
« Ответ #11 : 07-01-2006 23:40 » 

опять директива pragma once
она препятствует повторному включению компилятором header файла, то есть если у нас с 10 таких файлов то проверяются все???
Записан
piterbyr
Гость
« Ответ #12 : 07-01-2006 23:42 » 

#if _MSC_VER > 1000
#pragma once
#endif
кстати вот такие директивы в StdAfx не очень понятно зачем они..
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #13 : 09-01-2006 05:27 » 

#if _MSC_VER > 1000
#pragma once
#endif
кстати вот такие директивы в StdAfx не очень понятно зачем они..


чтобы у младших версий крыша не улетела наверное Улыбаюсь

А я применяю pragma once (только в самописных инклудах)

"блок" #ifdef...#esle...#endif  у меня только там, где надо по разному больШую часть кода скомпилить, то есть, к примеру, как сама готовая программа, так и некий инструмент для неё (часть кода одинаковая)
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines