Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Стражи включения и #pragma once 
V
    Опции темы
Alca
Дата 29.4.2009, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 6
Всего: 50



Какой смысл использования страж включения с директивой компилера #pragma once?
Выделить всёкод C++
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
#ifndef BOOST_CURRENT_FUNCTION_HPP_INCLUDED
#define BOOST_CURRENT_FUNCTION_HPP_INCLUDED
// MS compatible compilers support #pragma once
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
# pragma once
#endif
...
#endif



--------------------
PM WWW ICQ Skype Jabber   Вверх
azesmcar
Дата 29.4.2009, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 2
Всего: 211



Alca

Потому что он может и не поддерживаться
Выделить всёкод C++
1:
2:
3:
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

а зачем тогда он нужен? хороший вопрос.
pragma once может заметно ускорить процесс компиляции, если он поддерживается - лучше использовать его.
Немного о pragma once
PM   Вверх
Alca
Дата 29.4.2009, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 6
Всего: 50



Цитата

You can use both #pragma once and include guards to write portable code that can also take advantage of #pragma once optimizations the compiler may support:
File "grandfather.h"
Выделить всёкод C++
1:
2:
3:
4:
5:
6:
7:
#pragma once
#ifndef GRANDFATHER_H
#define GRANDFATHER_H
 
struct foo {
    int member;
};

 
#endif /* GRANDFATHER_H */



--------------------
PM WWW ICQ Skype Jabber   Вверх
azesmcar
Дата 29.4.2009, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 2
Всего: 211



Alca

Ну?
Цитата

Потому что он может и не поддерживаться

Цитата

pragma once может заметно ускорить процесс компиляции, если он поддерживается - лучше использовать его.

Используя оба - получим быструю компиляцию для тех кто поддерживает, и обычную для тех кто не поддерживает. Переносимость

Добавлено @ 16:08
Alca
Цитата

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

эта проверка лишняя.
user posted image
Перевод:  Незнакомые pragma игнорируются компилятором по стандарту С++.
правда может и варнинг выдать

Это сообщение отредактировал(а) azesmcar - 29.4.2009, 16:12
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0653 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.