зачем в С++ тащить макросы, удел которых Си? в куче FAQ-ов по С++ не рекомендуют этого делать кстати. касаемо MAX: раз пишется на С++, то не проще(правильнее) ли использовать std::max<T> ?
W4FhLF несколько затуманенный ход беседы, потому я и засомневалса окей, Си. для языка Си есть бесплатные наработки в инете большом, вот, в частности: http://sglib.sourceforge.net/
_basmp_ > симпатичные фичи. Эта тулзень гдето лежит? В сорцах? > Или это внутреняя тулза. Нельзя-ли ее обнародовать? Или она строго комковая? обнародовать можно, но это же ее до ума доводить нужно. как минимум документировать, потому как без документации с ней никто кроме автора не разберется. к тому же она не лишена побочных эффектов, которые опять-таки надо документировать. в частности, конструкция .#.str означает, что str заменяется на temp = CRC(str) в _этом_ вызове, а во _всех_ _последующих_ подставляется temp, если нужно вызывать CRC заново, тогла пишем .#!R.str. конечно, это арабская грамота и "птичий" язык получается. местами не продуманный. для себя - сойдет, а так... навряд ли. W4FhLF > Что ты имеешь ввиду? нежелание использовать шаблоны без особой нужны, т.к. это несколько другая парадигма вообще-то... > Опять не понял. Что это значит? То, что компилятор часто игнорирует inline? static inline void INIT_LIST_HEAD(struct list_head *list) { list->next = list; list->prev = list; } почему ms это не компилит? > Есть __forceinline (для компилера от MS) ага, и все остальные компилеры компилят это тоже спасибо, не надо > То, что не описано в стандарте, т.е. все твои собственные доработки -- это уже хаки. кури стандарт. дополнительный препроцессор, поставляемый вместе с самой программой и написанный на ANSI C, в стандарте оговорен и разрешен. так что это по любому не хак. > то для целых знаковых типов могу предложить каст до long. в том-то и дело, что MAX(a, b) позволяет забыть о типах. и это основная сила макросов. например, Z2ERR(a) ((a)?(a):-1), который возвращает -1 если a == 0, причем, a может быть и указателем. и никакой кастинг тут уже не прокатит. причем, пример, вовсе не надуманный.
kaspersky В смысле функционал? ну хотябы вкратце - да. остальное выспросится в смысле одна переменная/дефайн на всех? Да это совсем некрасиво. Тут не документировать, а править надо. Даже самому запутаться на раз. Ничего, мы перлом битые. И не такие иероглифы видали. Ну так для этого и есть ос. Чтоб доводить интересные идеи на доводку которых у самого времени не хватает и комковости не предполагается.
Ну да, обобщённое программирование. Ты ведь сам их сравнил с макросами, поэтому я и спросил. А в рамках С++ эти средства прекрасно согласуются с парадигмой ООП, поэтому желание должно возникать само собой. Про С тут и говорить собственно не о чем. __inline Какой это раздел? Ты невнимательно читаешь, что я пишу: "В случае с MAX макрос это хорошее решение, не спорю." А вот использование макросов для расчёта хешей для строк -- вряд ли. Не знаю, что ты там пишешь, что расчёт хеша для строки является hot spot'om и приходится использовать какие-то китайские конструкции, кроме тебя никому непонятные.
кстати, почему-то вспомнилось про существование PERL-а. kaspersky, не пытаешься ли ты через Си и макросы изобрести этот замечательный язык?