LINUX.ORG.RU

> «header hooks»

Wtf is that? Are you talking about 'include guards'?

anonymous
()

Нафиг сдалась эта #pragma once! Ни разу не видел ни одного исходника с такой директивой. А вот #ifndef __HEADER_H__ #define __HEADER_H_ ... #endif - классика. И многие текстовые редакторы (хоть тот же gedit) вставляют ее по клавосочетанию. В geany легко настроить «автодополнение» для этого (которое автоматом будет конвертировать имя файла header.h в имя макроса __HEADER_H__).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Yareg

Вы думаете, кто-нибудь додумается библиотечный макрос обозвать чем-то вроде __MYMATHMETHOD_H__? Сомневаюсь, что подобный конфликт имен имеет ненулевую вероятность...

Eddy_Em ☆☆☆☆☆
()

Header guards более громоздок и подвержен коллизиям имён. #pragma once отсутствует в стандарте.

KblCb ★★★★★
()
Ответ на: комментарий от Yareg

IIRC зарезервированны названия с двумя подчёркиваниями и одним подчёрком и большой буквой.

anonymous
()
Ответ на: комментарий от Eddy_Em

> Вы думаете, кто-нибудь додумается

Вот такие, как ты, и быдлокодят в адобе.

anonymous
()
Ответ на: комментарий от jtootf

охох, сейчас набегут борцуны невидимого фронта и начнут трещать, что это пережиток прошлого и все популярные компиляторы нынче поддерживают #pragma once :)

yoghurt ★★★★★
()
Ответ на: комментарий от KblCb

>Header guards более громоздок и подвержен коллизиям имён. #pragma once отсутствует в стандарте.

сл-но #pragma once == быдлокод.

http://lurkmore.ru/Nuff_Said

drBatty ★★
()
Ответ на: комментарий от Eddy_Em

>Я про C/C++, причем здесь пыхпых?

пыхпыховцы без неё жить не могут :-)

drBatty ★★
()
Ответ на: комментарий от Eddy_Em

>Нафиг сдалась эта #pragma once! Ни разу не видел ни одного исходника с такой директивой

Её по-умолчанию студия ставит в заголовочных файлах, ЕМНИП начиная с версии 7

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

Тоже мне стандарт. Здесь даже так можно сказать: если у них что-то используется, значит, использовать это не надо.

Выбор однозначно решен в пользу «headers hooks».

Eddy_Em ☆☆☆☆☆
()

Я бы добавил в стандарт #pragma noonce. А пока нет, юзаем макросы.

const86 ★★★★★
()

@pragma once работает не везде. А там, где оно работает, и обычны include guard'ы оптимизируются. Так что выкинуть нах этот pragma once.

Obey-Kun ★★★★★
()

Применение #pragma once вместо include guard увеличит скорость компиляции во многих случаях благодаря высокоуровневому механизму; компилятор может самостоятельно сравнивать имена файлов или inode'ы без необходимости вызова препроцессора Си для проверки заголовка на наличие #ifndef и #endif. С другой стороны, некоторые компиляторы, как например, GCC, также использует специальный код для распознавания и оптимизации обработки include guard. Можно использовать обе команды, #pragma once и include guards, для написания переносимого кода, что также может принести выгоду от применения #pragma once при оптимизации (если компилятор её поддерживает)

из википедии

pozitiffcat ★★★
()

Я хочу умный #include. Желательно с контролем версий подключаемых файлов.

Всё же иногда хочу умный, но настраиваемый или отключаемый сборщик мусора.

Хочу простого человеческого щастья.

А вы тут со своими хедерхуксам... Эххх

m4n71k0r
()
Ответ на: комментарий от pozitiffcat

> С другой стороны, некоторые компиляторы, как например, GCC, также использует специальный код для распознавания и оптимизации обработки include guard

а также и 99% прочих компиляторов, поддерживающих pragma once.

Obey-Kun ★★★★★
()

include guards - костыль для преодоления кривизны C/C++

pragma once - костыль для преодоления кривизны include guards'ов

С радостью отказался бы от них обоих.

elverion
()
Ответ на: комментарий от pozitiffcat

Лучше уж D. Но хотелось бы именно в C++. Хочется, чтобы любимый язык программирования стал ещё лучше.

Когда появился C# - удивился: «Зачем нужен жабабейсик?». Да и всё равно считаю его проприетарным перректальным продуктом кое-какой мелкой компании.

Java под другой кое-какой компанией.

m4n71k0r
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.