![]() |
Модераторы: LSD Страницы: (10) Все « Первая ... 5 6 [7] 8 9 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]() ![]() ![]() |
|
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
ну, данный код создает 39 специализаций шаблона, вида:
предлагаешь ручками написать ![]() upd. если что, я это не писал, а из одного своего проекта скопипастил и немного изменил ![]() Это сообщение отредактировал(а) Lazin - 16.4.2009, 09:11 |
|||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 2 Всего: 211 |
Андрей Александреску когда писал библиотеку Loki видимо не успел изучить typedef. И я тоже видимо не очень хорошо его представляю..не покажете как заменить? Добавлено через 1 минуту
да шучу я ![]() |
||||
|
|||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Приводить аргументы типа #define size(x) rand() - глупо. Ну и что это такое? Ну define, ну западло и чего дальше-то? Кому это надо такое делать? Уходящему программисту, которому недовыплатили пособие? Так он и без того нагадит
![]() -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 1 Всего: 56 |
с произвольными типами никак, а вот с конкретными легко.
Это сообщение отредактировал(а) vinter - 16.4.2009, 09:18 |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
||||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 2 Всего: 211 |
Так я тоже об этом. Это библиотека, а вот пользователь библиотеки может сделать typedef на конкретные типы и забыть о макросах. Я только хотел заметить что не все так однозначно. Макросы используются в СТЛ, в БУСТ, в ЛОКИ и во многих других библиотеках написанных серьезными людьми, которые кстати сами советуют избегать макросов. Но это не всегда удается. |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 1 Всего: 56 |
не, спасибо, мне в студии удобно и хорошо. Из за макросов менять не собираюсь, я лучше их использовать не буду. |
|||
|
||||
MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
inline не всегда inline ![]() мысли шире
и вариации потенциальные ошибки есть всегда лучше взять за правило думать прежде чем использовать static/анонимный namespace отменили? весь linux построен по принципу модуль = *.c файл : {static ГП, static функции, глобальные функции, экспортируемые функции} -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
MAKCim, C есть С - там свои особенности
![]() |
|||
|
||||
azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 2 Всего: 211 |
Любитель
Ну, макросы необходимы и в С и в С++. Есть по крайней мере 3 (сейчас больше не припоминаю) вещи которые невозможно написать без макросов. 1.
2.
3.
навскидку пока эти 3 Добавлено через 59 секунд в остальном макросы могут облегчить написание кода, т.е. генерировать то, что надо писать вручную. А тут уже программисту решать, надо или не надо. Зависит от ситуации. |
||||||
|
|||||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 1 Всего: 56 |
azesmcar, я про макросы говорил, а не препроцессор. Препроцессор, бесспорно, вещь нужная.
и все же, в большинстве случаев можно утверждать, что будет inline на конкретном компиляторе. Лично мне, этого достаточно. это не глобальные переменные, они глобальны в рамках юнита, а не проекта, разговор не о них(хотя эти тоже лишнее).
linux не показатель. Его основа писалась очень давно, времена меняются. Принципы программирования тоже. |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 2 Всего: 211 |
Так ведь ASSERT - макрос..и TYPELIST тоже. Речь не о том что надо макросы писать - хорошо и безусловно перед тем как написать макрос стоит хорошенько подумать над другими возможными решениями. Я просто хочу сказать что не стоит так однозначно ставить крест на макросах, иногда без них не обойтись (говоря не обойтись я не имею ввиду что по другому невозможно написать, я имею ввиду что просто другой способ - хуже). |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 1 Всего: 56 |
azesmcar, ассерт можно на ф-ию заменить, с typelist сложнее, то тоже, я думаю, можно выкрутиться
|
|||
|
||||
azesmcar |
|
||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 2 Всего: 211 |
можно, но тогда надо будет вручную передавать функции все параметры и получится вместо
я уже не говорю о том что #CONDITION в функцию без макросов не передать. Т.е. чтобы асерт выдавал текст проверки. (типа: assertion failed when checking condition "ptr != 0" in file program.cpp, on line 666, in function myfirstprogram::myfirstfunction) хотя как я уже написал
Это сообщение отредактировал(а) azesmcar - 16.4.2009, 13:47 |
||||||||
|
|||||||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 4 Всего: 154 |
за сколько часов напишешь без макросов мой пример с предыдущей страницы? ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила ведения Религиозных войн | |
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Религиозные войны | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |