Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Стражи повторного включения 
:(
    Опции темы
Lazin
Дата 12.8.2008, 15:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Встретил вот такой код:
Код

#ifndef _TR1_HASHTABLE_POLICY_H
#define _TR1_HASHTABLE_POLICY_H 1

как вы думаете зачем там 1

PM MAIL Skype GTalk   Вверх
Alek86
Дата 12.8.2008, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 21
Всего: 25



Код
#if (_TR1_HASHTABLE_POLICY_H == 1)

есть в коде?


--------------------
user posted image    user posted image
PM MAIL   Вверх
Daevaorn
Дата 12.8.2008, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Могу предположить, что просто для порядку.
PM MAIL WWW   Вверх
Lazin
Дата 12.8.2008, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(Daevaorn @  12.8.2008,  15:33 Найти цитируемый пост)
Могу предположить, что просто для порядку. 

похоже на то, поискал в других файлах, больше нигде не используется... smile 
PM MAIL Skype GTalk   Вверх
Alek86
Дата 12.8.2008, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 21
Всего: 25



или (что скорее всего) прогаммист думал, что дефайнить без значения нельзя. подобные заблуждения не так уж редки smile


--------------------
user posted image    user posted image
PM MAIL   Вверх
Lazin
Дата 12.8.2008, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(Alek86 @  12.8.2008,  16:14 Найти цитируемый пост)
или (что скорее всего) прогаммист думал, что дефайнить без значения нельзя. подобные заблуждения не так уж редки

это маловероятно, так как дефайн из стандартной библиотеки... скорее всего это какое-то соглашение

я вот к примеру видел такую идиому вместо использования стражей повторного включения

file: foo.h
Код

#ifndef FOO_H
#define FOO_H
....
#endif


file: bar.h
Код

#ifndef BAR_H
#define BAR_H

#    ifndef FOO_H
#        include "foo.h"
#    endif

.....


#endif


это должно немного ускорять компиляцию
PM MAIL Skype GTalk   Вверх
just_geek
Дата 15.8.2008, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 13.12.2007

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



Отсюда результаты тестов. 

Цитата

Nothing - 28 seconds 
#pragma once - 17 seconds 
Redundant include guards - < 1 second


Redundant include guards это и есть, то о чем говорил Lazin smile
PM MAIL   Вверх
Partizan
Дата 15.8.2008, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



just_geek, к вопросу-то это какое отношение имеет?


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
SABROG
Дата 15.8.2008, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


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

Репутация: 4
Всего: 91



Цитата(Partizan @ 15.8.2008,  17:01)
just_geek, к вопросу-то это какое отношение имеет?

Все-равно интересно.

Вообще логично, одно дело сотня таких проверок:

Код

if (...){}
if (...){}
if (...){}
...
n


или таких

Код

if (...)
{
    if (...)
    {
        if (...)
        {
            
        }
    }
    if (...)
    {
        if (...)
        {
            if (...)
            {
                
            }
        }
    }
}


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

Это сообщение отредактировал(а) SABROG - 15.8.2008, 20:28


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
andrew_121
Дата 16.8.2008, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



Цитата(Daevaorn @  12.8.2008,  15:33 Найти цитируемый пост)
Могу предположить, что просто для порядку.

Часто такое встречаю. Особено в OpenSource проектах, и особено в стареньких С проектах.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
GrayCardinal
Дата 16.8.2008, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


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

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



Цитата

я вот к примеру видел такую идиому вместо использования стражей повторного включения

Можно ламерский вопрос ? Что за стражи ? smile


--------------------
PM MAIL WWW   Вверх
Alek86
Дата 16.8.2008, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 21
Всего: 25



я и сам впервые именно с таким понятием тут столкнулся

те самые, что обычно заменяются на #pragma  once в студии


--------------------
user posted image    user posted image
PM MAIL   Вверх
Annihilator
Дата 17.8.2008, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


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

Репутация: 1
Всего: 3



Цитата(GrayCardinal @  16.8.2008,  14:11 Найти цитируемый пост)
Можно ламерский вопрос ? Что за стражи ?

Цитата(Alek86 @  16.8.2008,  15:02 Найти цитируемый пост)
я и сам впервые именно с таким понятием тут столкнулся


Страуструп Б. Язык программирования C++ Специальное издание. стр 261, п. 9.3.3.


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
jonie
Дата 17.8.2008, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 15
Всего: 118



я где-то читал что старые компиляторы могли не понимать просто дефайна без значения (вроде определено неизвестное)...

насчет скорости компиляции это все спорно. пологаю в компиляторе есть структурка аля hashmap где ключея является имя в дефайне, а значением собственно значение...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




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


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

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