|
Вопрос по С++ |
|
|
|
 |
Ответов
|
Dec 22 2011, 17:29
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(neiver @ Dec 22 2011, 15:57)  Эти возможности успешно заменяют макросы и превосходят их в 99% случаев. Эти возможности вообще нихрена не могут в кодогенерации по сравнению с макросами Код #define CMDLINE_DEVICE_CHOOSE(name, dev1, dev2) \ static char *cmdline_device_##name; \ static int cmdline_device_##name##_setup(char *dev) \ { \ cmdline_device_##name = dev + 1; \ return 0; \ } \ __setup(#name, cmdline_device_##name##_setup); \ void mx23_init_##name(void) \ { \ if (!cmdline_device_##name || \ !strcmp(cmdline_device_##name, #dev1)) \ mx23_init_##dev1(); \ else if (!strcmp(cmdline_device_##name, #dev2)) \ mx23_init_##dev2(); \ else \ pr_err("Unknown %s assignment '%s'.\n", \ #name, cmdline_device_##name); \ }
CMDLINE_DEVICE_CHOOSE(ssp1, mmc, spi1) Цитата Т.е. опять всё наоборот: заявлено, что в С макросы - могущество, а в С++ - геморрой В С++ макросами не пользуются по причине наличия встроенных средств языка - они дублируют часть возможностей макросов но слишком убоги по сравнению с ними.
Сообщение отредактировал sasamy - Dec 22 2011, 17:32
|
|
|
|
|
Dec 23 2011, 09:53
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(XVR @ Dec 23 2011, 11:28)  Весь этот ужас с макросом CMDLINE_DEVICE_CHOOSE замечательно ложится в тривиальный класс С++ (либо шаблонный, либо с парой виртуальных функций - как понравится) Это как раз говорит о том что вы как всегда несете чушь на протяжении этой темы - в шаблонах вы дальше типов не уедете, синтаксис вы не измените и то что этот пример может и не совсем удачный ничего не меняет (я его не писал специально - готовый пример - копипаста) - достаточно внести здесь условную компиляцию например в зависимости от устройства, платформы, конфига добавлять определенный код как ваш "тривиальный" класс превратится в месиво а у меня все будет как прежде ясно и кратко. Цитата либо с парой виртуальных функций да вы вообще похоже не догоняете - у меня код автоматически генерируется а вам с вашими виртуальными ф-ми его вручную набивать надо будет для всех вариантов. CMDLINE_DEVICE_CHOOSE(ssp1, mmc, spi1) CMDLINE_DEVICE_CHOOSE(ssp2, nand_mfc, spi2)
Сообщение отредактировал sasamy - Dec 23 2011, 10:23
|
|
|
|
|
Dec 23 2011, 10:45
|
Местный
  
Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123

|
Цитата(sasamy @ Dec 23 2011, 13:53)  да вы вообще похоже не догоняете - у меня код автоматически генерируется а вам с вашими виртуальными ф-ми его вручную набивать надо будет для всех вариантов. CMDLINE_DEVICE_CHOOSE(ssp1, mmc, spi1) CMDLINE_DEVICE_CHOOSE(ssp2, nand_mfc, spi2) Если вы не знаете как это сделать красиво, просто и надежно - так и скажите. Это не значит что этого нельзя сделать вообще. Есть такой паттерн проектирования - стратегия называется, с его помощью такое очень легко и красиво реализуется, и без единой директивы условной компиляции. Реализовать его можно как с помощью виртуальных функций, так и на шаблонах. Выбор-же нужной стратегии удобно осуществлять в билд системе.
Сообщение отредактировал neiver - Dec 23 2011, 10:48
|
|
|
|
|
Dec 23 2011, 14:12
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(sasamy @ Dec 23 2011, 15:10)  А теперь подумай хорошенько - стоит ли применять паттерны проектирования в ООП там где это ну совсем нафик не нужно. Вам - не нужно. А вменяемые люди применяют Цитата в шаблонах вы дальше типов не уедете, Да ну??? Цитата синтаксис вы не измените До некоторой степени можно изменить. Цитата и то что этот пример может и не совсем удачный ничего не меняет Это точно, пока вы несете пургу и ни одного удачного примера не привели Цитата достаточно внести здесь условную компиляцию например в зависимости от устройства, платформы, конфига добавлять определенный код Давайте, продемонстрируйте. Цитата как ваш "тривиальный" класс превратится в месиво То, что вы не знаете С++ мы уже поняли, зачем же об этом продолжать так надрывно кричать? Цитата а у меня все будет как прежде ясно и кратко. Да уж, макросы на пол-страницы - это 'ясно и кратко'
|
|
|
|
|
Dec 23 2011, 18:34
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(XVR @ Dec 23 2011, 22:26)  Это вы к чему? Там один клоун пример просил использования макросов - но мне самому что-то не хочется больше писать. Цитата Если вы не в курсе, то boost - это С++ библиотека, а не С Об это даже в заголовке написано по ссылке - не думайте что все кругом совсем дебилы, по себе не судите. Я мог бы вам дать ссылки на исходники ядра Linux где макросы очень эффективно используются - вызововы syscall, микроассемблер для mips и проче но вы же ответите в своем стиле - я это напишу красиво - один класс с парой виртуальных ф-ций при этом не приводя ни строчки своего кода, поэтому я вам дал ссылку на библиотку С++ - можете начать отсюда http://www.boost.org/doc/libs/1_48_0/libs/.../doc/index.html
Сообщение отредактировал sasamy - Dec 23 2011, 21:17
|
|
|
|
|
Dec 24 2011, 16:52
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(sasamy @ Dec 23 2011, 22:34)  Там один клоун просил использования макросов - но мне самому что-то не хочется больше писать. У вас не просили примеры применения макросов, от вас просили удачных примеров на С, а вы дали ссылка на С++ библиотеку. То, что вам писать больше не хочется это заметно, ибо писать нечего Цитата Об это даже в заголовке написано по ссылке - не думайте что все кругом совсем дебилы, я не думаю, что все. Пока вы один тут клоуном выступаете Цитата Я мог бы вам дать ссылки на исходники ядра Linux Не надо, я знаю, где ядра лежат Цитата где макросы очень эффективно используются Мы вроде про С++ говорили, а не про макросы? Цитата но вы же ответите в своем стиле - я это напишу красиво - один класс с парой виртуальных ф-ций Все ядро Linux написано в ООП стиле. А то, что не на С++ объясняется исключительно идеосинкрозией Торвальдса на С++ Цитата при этом не приводя ни строчки своего кода, Пардон, я не понял, что вы хотели увидеть код. Я так думал, что вы вылезли сюда исключительно полить помоями С++ и всех его приверженцев. Цитата поэтому я вам дал ссылку на библиотку С++ - можете начать отсюда Нафига оно мне? Я и так boost использую. И то, что возможности препроцессора С не полностью покрываются возможностями С++ я тоже знаю, но ведь речь шла не об этом. К сожалению, я не смогу привести пример вашего куска кода на С++, т.к. по этому куску совершенно непонятно, что он должен был делать. Но чисто внешне, это должно быть чем то таким: Код template<class Dev1, class Dev2> class CmdLineDevChoise { Dev1 dev1; Dev2 dev2; public: void init() { char* name=get_cmd_line_device_name(); if (strcmp(name,dev1.get_name())==0) dev1.init(); else if (strcmp(name,dev2.get_name())==0) dev2.init(); else abort(); } };
// Usage: CmdLineDevChoise<MmcDev,SPI1Dev> ssp1; И так же чисто внешне, этот кусок должен быть сделан немного по другому PS. Последний крендель, с черезмерным ЧСВ, который пытался научить всю конференцию С++, ссылаясь на каких то старших товарищей из IBM, и проявляя при этом невежество, упертость и хамство, закончил баном. Вы уверенно шагаете по его стопам
|
|
|
|
|
Dec 24 2011, 18:17
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(XVR @ Dec 24 2011, 20:52)  Не надо, я знаю, где ядра лежат  И естественно не разбираетесь в нем. Цитата А то, что не на С++ объясняется исключительно идеосинкрозией Торвальдса на С++ Вы с ним лично знакомы ? хотя странно что вы не сказали в своем стиле - он С++ не знает  Цитата И то, что возможности препроцессора С не полностью покрываются возможностями С++ я тоже знаю, но ведь речь шла не об этом. А о чем ? лично я говорил именно об этом - препроцессор С намного удобней и мощней встроенных средств С++.
|
|
|
|
|
Dec 24 2011, 20:31
|
Местный
  
Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123

|
Цитата(sasamy @ Dec 24 2011, 22:17)  А о чем ? лично я говорил именно об этом - препроцессор С намного удобней и мощней встроенных средств С++. Покажите, пожалуйста, как с помощью препроцессора повторить некий кусок кода N раз, при условии, что N заранее не известно и передаётся откуда-нибудь из вне в виде целочисленного литерала. Очень типичная такая задача кодогенерации, надо например, короткую задержку NOP-ами сделать, и количество их как-то вычисляется. Я вам потом покажу, если захотите, как это делается на препроцессоре и на шаблонах. Будет возможность сравнить.
|
|
|
|
|
Dec 24 2011, 21:20
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(neiver @ Dec 25 2011, 00:31)  Очень типичная такая задача кодогенерации, надо например, короткую задержку NOP-ами сделать Для вас типичная - для меня нетипичная и даже бесполезная в какой-то мере  кросплатформенность должна быть. В linux например богомипсы для точных задержек вычисляются при инициализации ядра и на основании их вычисляются точные програмные задержки. Цитата Я вам потом покажу, если захотите, как это делается на препроцессоре и на шаблонах. Будет возможность сравнить. Покажите, если хотите - я не против  кажется в avr-libc на препроцессоре задержки сделаны.
|
|
|
|
Сообщений в этой теме
_Артём_ Вопрос по С++ Dec 13 2011, 17:38 neiver Направление мысли правильное. Фабрика вам в помощь... Dec 13 2011, 18:38 _Артём_ Цитата(neiver @ Dec 13 2011, 20:38) Если ... Dec 13 2011, 18:49  neiver Цитата(_Артём_ @ Dec 13 2011, 22:49) Полу... Dec 13 2011, 19:12   _Артём_ Цитата(neiver @ Dec 13 2011, 21:12) Нет. ... Dec 13 2011, 20:07    Сергей Борщ QUOTE (_Артём_ @ Dec 13 2011, 22:07) Что-... Dec 13 2011, 21:06     _Артём_ Цитата(Сергей Борщ @ Dec 13 2011, 23:06) ... Dec 13 2011, 21:37 Danis Цитата(_Артём_ @ Dec 13 2011, 20:38) Созд... Dec 14 2011, 08:33 neiver Цитата(Danis @ Dec 14 2011, 12:33) ИМХО, ... Dec 14 2011, 08:51 _Артём_ Цитата(Danis @ Dec 14 2011, 10:33) ИМХО, ... Dec 14 2011, 09:35  kolobok0 Цитата(_Артём_ @ Dec 14 2011, 13:35) ..А ... Dec 14 2011, 10:57   dxp Цитата(kolobok0 @ Dec 14 2011, 17:57) ну ... Dec 14 2011, 11:59    kolobok0 Цитата(dxp @ Dec 14 2011, 15:59) ...какие... Dec 16 2011, 08:23     ReAl Цитата(kolobok0 @ Dec 16 2011, 10:23) Лич... Dec 16 2011, 09:57      kolobok0 Цитата(ReAl @ Dec 16 2011, 13:57) ...текс... Dec 17 2011, 21:46       dxp QUOTE (kolobok0 @ Dec 18 2011, 04:46) про... Dec 18 2011, 05:33     dxp Цитата(kolobok0 @ Dec 16 2011, 15:23) для... Dec 16 2011, 19:48      Danis Цитата(dxp @ Dec 16 2011, 22:48) А ваши р... Dec 16 2011, 20:55       _Артём_ Цитата(Danis @ Dec 16 2011, 22:55) Но дум... Dec 18 2011, 02:05        kolobok0 Цитата(_Артём_ @ Dec 18 2011, 06:05) ...Э... Dec 19 2011, 03:00         haker_fox QUOTE (kolobok0 @ Dec 19 2011, 11:00) вес... Dec 19 2011, 05:34         dxp QUOTE (kolobok0 @ Dec 19 2011, 10:00) я л... Dec 19 2011, 06:05          kolobok0 Цитата(dxp @ Dec 19 2011, 10:05) ..спасиб... Dec 19 2011, 09:04           sonycman Цитата(kolobok0 @ Dec 19 2011, 13:04) Есл... Dec 19 2011, 10:12    sasamy Цитата(dxp @ Dec 14 2011, 15:59) Поясните... Dec 20 2011, 08:35     dxp QUOTE (sasamy @ Dec 20 2011, 15:35) Самый... Dec 20 2011, 09:24      sasamy Цитата(dxp @ Dec 20 2011, 13:24) Сложный ... Dec 20 2011, 09:50       demiurg_spb Я скажу может крамольную вещь и даже кому-то будет... Dec 20 2011, 10:09        sasamy Цитата(demiurg_spb @ Dec 20 2011, 14:09) ... Dec 20 2011, 10:28         demiurg_spb При чём здесь это?
Как часто принимаются новые ста... Dec 20 2011, 10:33         XVR Цитата(sasamy @ Dec 20 2011, 14:28) Специ... Dec 20 2011, 10:44          sasamy Цитата(XVR @ Dec 20 2011, 14:44) Не испол... Dec 21 2011, 08:01           Сергей Борщ QUOTE (sasamy @ Dec 21 2011, 10:01) Если ... Dec 21 2011, 08:12            sasamy Цитата(Сергей Борщ @ Dec 21 2011, 12:12) ... Dec 21 2011, 08:40             Сергей Борщ QUOTE (sasamy @ Dec 21 2011, 10:40) хотя ... Dec 21 2011, 09:57              sasamy Цитата(Сергей Борщ @ Dec 21 2011, 13:57) ... Dec 21 2011, 11:35               XVR Цитата(sasamy @ Dec 21 2011, 15:35) Идея ... Dec 21 2011, 11:42                sasamy Цитата(XVR @ Dec 21 2011, 15:42) Писали н... Dec 21 2011, 19:47                 ReAl Цитата(sasamy @ Dec 21 2011, 21:47) Тут к... Dec 21 2011, 20:09                  sasamy Цитата(ReAl @ Dec 22 2011, 00:09) могу то... Dec 22 2011, 08:30                   ReAl Цитата(sasamy @ Dec 22 2011, 10:30) Чего ... Dec 22 2011, 10:00                    sasamy Цитата(ReAl @ Dec 22 2011, 14:00) Это мы ... Dec 22 2011, 11:20                     Сергей Борщ QUOTE (sasamy @ Dec 22 2011, 13:20) Скаже... Dec 22 2011, 11:39                      sasamy Цитата(Сергей Борщ @ Dec 22 2011, 15:39) ... Dec 22 2011, 11:42                       dxp QUOTE Потрудитесь книжки почитать
http://www.progr... Dec 22 2011, 16:19                        Прохожий Цитата(dxp @ Dec 22 2011, 20:19) ....
ПМС... Dec 22 2011, 17:53                         dxp QUOTE (Прохожий @ Dec 23 2011, 00:53) ПМС... Dec 23 2011, 05:55                          Прохожий Цитата(dxp @ Dec 23 2011, 09:55) Это вряд... Dec 23 2011, 18:42                           dxp QUOTE (Прохожий @ Dec 24 2011, 01:42) Вот... Dec 24 2011, 06:44                            sasamy Цитата(dxp @ Dec 24 2011, 10:44) Если же ... Dec 24 2011, 08:06                            Прохожий Цитата(dxp @ Dec 24 2011, 10:44) Речь идё... Dec 24 2011, 17:55                             dxp QUOTE (Прохожий @ Dec 25 2011, 00:55) Опя... Dec 25 2011, 04:58               haker_fox QUOTE (sasamy @ Dec 21 2011, 19:35) Абсол... Dec 21 2011, 11:52             XVR Цитата(sasamy @ Dec 21 2011, 12:40) Кстат... Dec 21 2011, 11:10              kolobok0 Предлагаю свернуть тему. А то НГ на носу. И страни... Dec 21 2011, 11:42           haker_fox QUOTE (sasamy @ Dec 21 2011, 16:01) http:... Dec 21 2011, 09:12           dxp QUOTE (sasamy @ Dec 21 2011, 15:01) Если ... Dec 21 2011, 10:07           ReAl Цитата(sasamy @ Dec 21 2011, 10:01) По су... Dec 21 2011, 12:12            dxp QUOTE (ReAl @ Dec 21 2011, 19:12) И тогда... Dec 21 2011, 13:23             Genadi Zawidowski Цитата(dxp @ Dec 21 2011, 17:23) Это был ... Dec 22 2011, 12:50            sasamy Цитата(ReAl @ Dec 21 2011, 16:12) А дальш... Dec 21 2011, 17:10       Сергей Борщ QUOTE (sasamy @ Dec 20 2011, 11:50) Приме... Dec 20 2011, 10:59        ViKo Цитата(Сергей Борщ @ Dec 20 2011, 13:59) ... Dec 20 2011, 11:13       dxp QUOTE (sasamy @ Dec 20 2011, 16:50) Это о... Dec 20 2011, 11:14  Danis Цитата(_Артём_ @ Dec 14 2011, 12:35) В см... Dec 16 2011, 09:28 Iptash С++ я бы сказал совершенно другой, отличный от С я... Dec 18 2011, 13:24 dxp QUOTE (Iptash @ Dec 18 2011, 20:24) С++ я... Dec 18 2011, 16:58  Iptash Цитата(dxp @ Dec 18 2011, 20:58) ... Наве... Dec 18 2011, 17:12 haker_fox Господа, может быть не будем заниматься поддержани... Dec 20 2011, 09:58 ViKo Я не знаю языка C++, хотя и прочитал Г. Шилдта до ... Dec 20 2011, 10:42 Сергей Борщ QUOTE (ViKo @ Dec 20 2011, 13:13) А я вот... Dec 20 2011, 12:43 ViKo Цитата(Сергей Борщ @ Dec 20 2011, 15:43) ... Dec 20 2011, 12:50 haker_fox QUOTE (Сергей Борщ @ Dec 20 2011, 20:43) ... Dec 20 2011, 13:54 Flexz Цитата(sasamy @ Dec 21 2011, 12:01) По су... Dec 21 2011, 08:34 Flexz Видимо, он имел ввиду единый, общий для разных ком... Dec 21 2011, 09:36 ReAl 1) На ассемблере+фортране в своё время было написа... Dec 21 2011, 19:38 toweroff sasamy,
вот у меня в соседней ветке конкретный во... Dec 21 2011, 20:11      neiver Цитата(sasamy @ Dec 23 2011, 15:10) А теп... Dec 23 2011, 11:26           sasamy Цитата(XVR @ Dec 24 2011, 20:52) проявляя... Dec 24 2011, 17:06            XVR Цитата(sasamy @ Dec 24 2011, 21:06) Это в... Dec 24 2011, 17:12              neiver Цитата(sasamy @ Dec 25 2011, 01:20) Для в... Dec 25 2011, 07:43 ViKo А за сайтик http://www.programmer-lib.ru - спасибо... Dec 22 2011, 17:11 Сергей Борщ QUOTE (sasamy @ Dec 22 2011, 13:42) Потру... Dec 23 2011, 08:55 Flexz Цитата(sasamy @ Dec 23 2011, 22:34) ...мо... Dec 24 2011, 11:32 sasamy Цитата(Flexz @ Dec 24 2011, 15:32) Осталь... Dec 24 2011, 12:09 Flexz Цитата(sasamy @ Dec 24 2011, 16:09) Ищите... Dec 24 2011, 15:12
2 страниц
1 2 >
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|