-
- иногда так делаю совместно с подменой имен макросами и одним дефайном перед включением, но отлаживать бывает очень неудобно - Vit(29.04.2013 09:56)
- ну совсем не смешно. - Nikolay801_(29.04.2013 09:24)
- А чего тут думать. Если времени не жалко, и нет разных требований к разным модулям, то инклудь и дело с концом, а если времени лишнего нет, или требуется, например, одну часть кода компилить на минимизацию времени исполнения, а другую на Codavr(414 знак., 29.04.2013 01:57 - 02:01)
- Для IAR AVR? Apтём(497 знак., 29.04.2013 02:52)
- Он самый. Codavr(183 знак., 29.04.2013 02:54 - 02:56)
- Не уменьшает. Тото и оно.Инклюдить надо H-файлы в которых inline-функции. Тогда и компилер найдёт чего соптимизировать и порядок будет соблюден. И кроссплатформистей код получится. Но по времени разработки процесс дольше, патамучта оптимизация. - Apтём(29.04.2013 03:10)
- Он самый. Codavr(183 знак., 29.04.2013 02:54 - 02:56)
- Так и буду делать - MBedder(29.04.2013 02:07)
- Для IAR AVR? Apтём(497 знак., 29.04.2013 02:52)
- Вообще, не совсем корректная постановка. Тут практически на каждый аргумент можно возразить "мне и так удобно", "я этим не пользуюсь" и пр. Модульность как принцип был внедрен с целью упростить работу программиста-архитектора. Ясень пень, имея за testerplus(872 знак., 28.04.2013 16:55)
- Browser ф-й из этого файла не видит(SlickEdit). Нельзя выключить отладочную инфу для файла. Я для прерываний выключаю, чтобы при пошаговой отладке не попадать в ф-ю прерывания, по таймеру, например. - abivan(28.04.2013 16:03)
- Для MPLAB8 + C30 + отладка по светодиоду и UART это неважно - MBedder(28.04.2013 16:11)
- В С++ есть такой метод писанины - header-only libraries. Термоядерная вещЬчЬ. Правда скорость сборки не увеличивает, а скорее наеборот, но кайф немеряный :-)). (кто про что, а я - понятно про что :-)) ) - =AlexD=(28.04.2013 15:49)
- Не в этой жизни :)) - MBedder(28.04.2013 15:53)
- "никогда не говори никогда"(с) ;-) - =AlexD=(28.04.2013 15:58)
- Не в этой жизни :)) - MBedder(28.04.2013 15:53)
- А зачем такой изврат? Сравнил на проекте:IAR8051 , 9к кода. При включении multi-file compilation экономия 50 байт кода... - Andreas(28.04.2013 15:31)
- у multi-file compilation есть следующая фича: есть у вас вектор прерывания и в вэтом векторе вы вызываете функцию из другого сишника. Дык вот при переходе вызова кода из одного обьектника в другой, производится сохранение в стек ВСЕХ регистров. MegaJohn(257 знак., 29.04.2013 05:09)
- А скорости сколько наэкономится? ASDFS(131 знак., 28.04.2013 15:50)
- +100500 - MBedder(28.04.2013 15:52)
- Да хотя бы патамушта --> - MBedder(28.04.2013 15:40 - 15:47, ссылка, ссылка)
- "Некрасива". Чую, будут и в тебя пальцами тыкать :) - Vladimir Ljaschko(28.04.2013 14:50)
- Ничего, я привычный :)) И насчет "некрасива" - это еще поспорить можно, а то, что "так не принято", я в своей жизни слышал многократно, но ни разу не услышал ответ на "а почему не принято?" - MBedder(28.04.2013 14:55 - 15:05)
- А, кстати, еще: некоторые компиляторы ограничивают ресурсы на модуль (навскидку: PICC18 не давал больше двух банков RAM одному модулю). Для мелких проектов может и пох, а в целом - затык. - testerplus(28.04.2013 15:47)
- У меня порог вхождения в целесообразность писАния на С равен 16 бит, да и то с натяжкой, такштаа пущай себе - MBedder(28.04.2013 15:50)
- Переносимость кода страдает. Если есть глобальная для модуля переменная, то она должна иметь уникальное имя, которое в будущем не появится в другом модуле - testerplus(28.04.2013 15:10)
- +1 static перестает работать. - abivan(28.04.2013 15:46)
- Ну и пущай - а глобальные на что? - MBedder(28.04.2013 15:47)
- вся экономия и накроется. Для глобальной переменной нужно имя с префиксом писать, чтобы уникльность обеспечить. - abivan(28.04.2013 15:50)
- Я и в АСМе так делал, и в С точно так же буду - одной буквы не жалко - MBedder(28.04.2013 15:55)
- вся экономия и накроется. Для глобальной переменной нужно имя с префиксом писать, чтобы уникльность обеспечить. - abivan(28.04.2013 15:50)
- Ну и пущай - а глобальные на что? - MBedder(28.04.2013 15:47)
- Это элементарная самодисциплина - блюсти вменяемость и уникальность имен. А "переносимость" - вообще ругательное для меня слово, ибо таковой не существует - MBedder(28.04.2013 15:14)
- Тогда и постановка меняется: "#inclde <.c>+дисциплина" vs. "раздельная компиляция" :) А с переносимостью что не так? Пишем SPI модуль, его таскаем из проекта в проект. - testerplus(28.04.2013 15:22)
- Ну давай, напиши мне многоканальный 32-bit Buffered Input Capture модуль для dsPIC33EP, и перетащи его на Мегу328 :)) - MBedder(28.04.2013 15:28)
- А почему на мегу, а не на pic10 какой-нибудь? Я не про кроссплатформенность. Да и потом, спец. задачи вне обсуждения. А всякая байда, вроде кнопок и мигалок может гулять через десятки проектов (пускай все на dspic33). Собственно, я сам иногда testerplus(48 знак., 28.04.2013 15:33)
- Дык я уж совсем не программист, посему мне не только можно, но и НУЖНО :)) - MBedder(28.04.2013 15:39 - 16:03)
- А вот интересно, систему контроля версий ты используешь? - Vladimir Ljaschko(28.04.2013 16:13)
- А нафега она ему фпилась - он же ярый индивидуалист ;) Отчитываться не перед кем, писанину согласовывать с посторонними тоже... - Гудвин(28.04.2013 16:19)
- А с компьютера на компьютер как переносить?! ;) А выслать заказчику логи svn для торговли? Мне пришлось на днях жостко торговаться - "верну все назад". - Vladimir Ljaschko(28.04.2013 16:24)
- Опять же - "не царское это дело". С компа на комп у меня носит Dropbox, а заказчик платит за готовые работающие изделия, а не за мегабайты писанины - MBedder(28.04.2013 16:27)
- Именно так. В случае чего, клиенту шлются файлики типа "ethernet_tenzo_m_v_2_1(nurlat_rs485).ccn". На месте узверь запущает утилитку (нах там не фпились всяческие "гипертерминалы"), выбирается этот файл и за несколько секунд фирмварь перешивается Гудвин(350 знак., 28.04.2013 16:43 - 16:51)
- У меня еще проще - клиент получает изделие с залоченными процами/CPLD, и слово "перепрошить" даже не выговаривает - это исключительно моя прерогатива, но пользоваться ей ни разу не пришлось, ибо все либо работает, либо приезжает ко мне на MBedder(15 знак., 28.04.2013 16:59)
- У меня на местах не просто "одна железка" - комплексы из нескольких разноплановых девайсов. Так что приходится иногда что то апгрейдить, добавлять, корректировать. Например, клиент заменил весы. Правда накопилась уже большая база этих самых Гудвин(312 знак., 28.04.2013 17:14)
- У тебя клиентов/девайсов достаточно много (сотни - тысячи, думаю), а у меня мало - клиентов десяток, девайсов сотня еле наберется. Поэтому "имею возможность купить козу, но не имею желания"(с) :)) - MBedder(28.04.2013 17:19)
- Твоими бы устами... :) Но сотни две набралось... Например, dот туда точно не наездишься по каждому чиху ;) : - Гудвин(28.04.2013 17:46, ссылка)
- У тебя клиентов/девайсов достаточно много (сотни - тысячи, думаю), а у меня мало - клиентов десяток, девайсов сотня еле наберется. Поэтому "имею возможность купить козу, но не имею желания"(с) :)) - MBedder(28.04.2013 17:19)
- P.S. а nurlat - это Нурали Латыпов? :)) - MBedder(28.04.2013 17:01)
- Это такой мелкий городок в Стране Вечно-зеленых Помидоров :) - Гудвин(28.04.2013 17:16)
- У меня на местах не просто "одна железка" - комплексы из нескольких разноплановых девайсов. Так что приходится иногда что то апгрейдить, добавлять, корректировать. Например, клиент заменил весы. Правда накопилась уже большая база этих самых Гудвин(312 знак., 28.04.2013 17:14)
- У меня еще проще - клиент получает изделие с залоченными процами/CPLD, и слово "перепрошить" даже не выговаривает - это исключительно моя прерогатива, но пользоваться ей ни разу не пришлось, ибо все либо работает, либо приезжает ко мне на MBedder(15 знак., 28.04.2013 16:59)
- Именно так. В случае чего, клиенту шлются файлики типа "ethernet_tenzo_m_v_2_1(nurlat_rs485).ccn". На месте узверь запущает утилитку (нах там не фпились всяческие "гипертерминалы"), выбирается этот файл и за несколько секунд фирмварь перешивается Гудвин(350 знак., 28.04.2013 16:43 - 16:51)
- Опять же - "не царское это дело". С компа на комп у меня носит Dropbox, а заказчик платит за готовые работающие изделия, а не за мегабайты писанины - MBedder(28.04.2013 16:27)
- Эт точно :)) - MBedder(28.04.2013 16:23)
- А с компьютера на компьютер как переносить?! ;) А выслать заказчику логи svn для торговли? Мне пришлось на днях жостко торговаться - "верну все назад". - Vladimir Ljaschko(28.04.2013 16:24)
- Нет, разумеется - у меня всегда одна-единственная версия, которая работает правильно, а все предыдущие тут же отправляются фтопку :)) - MBedder(28.04.2013 16:19)
- А нафега она ему фпилась - он же ярый индивидуалист ;) Отчитываться не перед кем, писанину согласовывать с посторонними тоже... - Гудвин(28.04.2013 16:19)
- А вот интересно, систему контроля версий ты используешь? - Vladimir Ljaschko(28.04.2013 16:13)
- Дык я уж совсем не программист, посему мне не только можно, но и НУЖНО :)) - MBedder(28.04.2013 15:39 - 16:03)
- А почему на мегу, а не на pic10 какой-нибудь? Я не про кроссплатформенность. Да и потом, спец. задачи вне обсуждения. А всякая байда, вроде кнопок и мигалок может гулять через десятки проектов (пускай все на dspic33). Собственно, я сам иногда testerplus(48 знак., 28.04.2013 15:33)
- Ну давай, напиши мне многоканальный 32-bit Buffered Input Capture модуль для dsPIC33EP, и перетащи его на Мегу328 :)) - MBedder(28.04.2013 15:28)
- Тогда и постановка меняется: "#inclde <.c>+дисциплина" vs. "раздельная компиляция" :) А с переносимостью что не так? Пишем SPI модуль, его таскаем из проекта в проект. - testerplus(28.04.2013 15:22)
- +1 static перестает работать. - abivan(28.04.2013 15:46)
- А, кстати, еще: некоторые компиляторы ограничивают ресурсы на модуль (навскидку: PICC18 не давал больше двух банков RAM одному модулю). Для мелких проектов может и пох, а в целом - затык. - testerplus(28.04.2013 15:47)
- Ничего, я привычный :)) И насчет "некрасива" - это еще поспорить можно, а то, что "так не принято", я в своей жизни слышал многократно, но ни разу не услышал ответ на "а почему не принято?" - MBedder(28.04.2013 14:55 - 15:05)
- А нафиг? - SciFi(28.04.2013 14:41)
- Как минимум - меньше писанины, меньше накладных, меньше недоразумений - MBedder(28.04.2013 14:52)
- А строка с ошибкой компиляции идентифицируется нормально? - Vladimir Ljaschko(28.04.2013 14:55)
- Абсолютно - заменил в инклюженном void на rvoid и тут же получил ругань с указанием файла и левой строки в нем - MBedder(28.04.2013 14:59)
- Кстати, build идет в разы быстрее - MBedder(28.04.2013 14:59)
- Это да, у меня проекты по несколько минут компилируются :( Обратная сторона макросов и прочей красивости. - Vladimir Ljaschko(28.04.2013 16:18)
- Макросами и я злоупотребляю по полной :)) - MBedder(28.04.2013 16:24)
- Это да, у меня проекты по несколько минут компилируются :( Обратная сторона макросов и прочей красивости. - Vladimir Ljaschko(28.04.2013 16:18)
- Кстати, build идет в разы быстрее - MBedder(28.04.2013 14:59)
- Абсолютно - заменил в инклюженном void на rvoid и тут же получил ругань с указанием файла и левой строки в нем - MBedder(28.04.2013 14:59)
- А строка с ошибкой компиляции идентифицируется нормально? - Vladimir Ljaschko(28.04.2013 14:55)
- Как так нафиг? А ежели лень все причесывать? :) - Гудвин(28.04.2013 14:48)
- Если честно - сильно ломает заранее описывать каждый будущий чих - MBedder(28.04.2013 14:56)
- Ну дык а я о чем? :) - Гудвин(28.04.2013 15:53)
- Сам-то как делаешь - инклюдишь или чИхаешь? :)) - MBedder(28.04.2013 15:56)
- Я же говорил недавно - пользую CVAVR с момента его появления (V1). Эта "надстройка над ассемблером" сначала лепит единый *.С файл, потом компилирует целиком в ассемблерный код. Так что все мои функции и переменные давно оптимизированы с учетом Гудвин(580 знак., 28.04.2013 16:16)
- Ну про Кортексы я и не говорю - там своя игра, а вот для dsPIC/PIC24 - самое оно походу. Спасибо! - MBedder(28.04.2013 16:21)
- Писать на
фортранеассемблере можно на любом языке! :-) - =AlexD=(28.04.2013 16:30)- А как еще иначе? :) Например, в WinAVR есть занятная библиотечная функция __delay. С какого то бодуна туда впендюрили плавучку в аргумент. Спору нет - задержку выдает точно. А ежели забыться и заюзать эту байду с переменной, а не с константой, Гудвин(195 знак., 29.04.2013 00:31)
- А если язык с наворотами (множественное наследование, чудо-шаблоны, перегрузка операторов и проч.), то ассемблер на нём особо пикантный может получиться :-) - SciFi(28.04.2013 16:34)
- Нет ничего невозможного для человека с интеллектом :-). А чо, это может быть даже интересно - кростплатформенный любимый ассемблер на плюсовых шаблонах, думаю вполне реально ;-). - =AlexD=(28.04.2013 17:02)
- Я в свое время с невероятным удовольствием перегружал операторы в ассемблере AS от Alfred Arnold (-->), затачивая даже синтаксис (!) под свои хотелки. Жаль, что для dsPIC/PIC24 он так и не родился - MBedder(28.04.2013 16:40, ссылка)
- Фточку! :)) - MBedder(28.04.2013 16:34)
- Писать на
- Ну про Кортексы я и не говорю - там своя игра, а вот для dsPIC/PIC24 - самое оно походу. Спасибо! - MBedder(28.04.2013 16:21)
- Я же говорил недавно - пользую CVAVR с момента его появления (V1). Эта "надстройка над ассемблером" сначала лепит единый *.С файл, потом компилирует целиком в ассемблерный код. Так что все мои функции и переменные давно оптимизированы с учетом Гудвин(580 знак., 28.04.2013 16:16)
- Сам-то как делаешь - инклюдишь или чИхаешь? :)) - MBedder(28.04.2013 15:56)
- Ну дык а я о чем? :) - Гудвин(28.04.2013 15:53)
- Если честно - сильно ломает заранее описывать каждый будущий чих - MBedder(28.04.2013 14:56)
- Как минимум - меньше писанины, меньше накладных, меньше недоразумений - MBedder(28.04.2013 14:52)
- На мелких процах это еще вопрос оптимизации. Не всякий компилер умеет инлайнить функции. - ASDFS(28.04.2013 14:39)
- Именно на мелких, и С30 как раз умеет, когда попросишь - MBedder(28.04.2013 14:53)