-
- Полумера (без расширений GNU) ** Скрипач(992 знак., 20.10.2013 15:29 - 16:22)
- Приведение типов без "выпендрежа": Скрипач(355 знак., 20.10.2013 15:14)
- Попытка применить приведение типов: Скрипач(516 знак., 20.10.2013 11:28)
- for(type* tmp = new type; tmp != 0; base_ptr = tmp, tmp = 0) - т.е. если куча закончится, то висим? м.б. следует это как-то иначе обрабатывать? инженегр(53 знак., 20.10.2013 11:44, )
- Лучше висеть. Скрипач(222 знак., 20.10.2013 11:58 - 12:04)
- Если исключить работу с нулевым указателем, то можно и повисеть в ожидании освобождения места в куче, останется вопрос: кто освободит место? Возможно поможет PT_WAIT_THREAD(). - инженегр(20.10.2013 12:19, )
- Это сложнее чем кажется на первый взгляд Скрипач(252 знак., 20.10.2013 14:56 - 15:04)
- проверял? компилируется? codepad ругается на скобочку error: expected primary-expression before '{' token Если убрать скобки то ругается на if: error: expected primary-expression before 'if', просто вызвать функцию компилятор разрешает. - инженегр(20.10.2013 15:55, )
- Конечно "ругается". Ибо GNU Extensions. Выше предложил вариант без их использования. - Скрипач(20.10.2013 15:59, ссылка)
- проверял? компилируется? codepad ругается на скобочку error: expected primary-expression before '{' token Если убрать скобки то ругается на if: error: expected primary-expression before 'if', просто вызвать функцию компилятор разрешает. - инженегр(20.10.2013 15:55, )
- Можно переопределить обработчик через set_new_handler() - Скрипач(20.10.2013 14:24, ссылка)
- Это сложнее чем кажется на первый взгляд Скрипач(252 знак., 20.10.2013 14:56 - 15:04)
- Все зависит от задачи. Висеть далеко не всегда "лучше". "Зависший" писюк и "зависшая" крылатая ракета - две большие разницы. - _basile(20.10.2013 12:09)Cкpипaч
- Дык, программирование вообще далеко не всегда применимо. Попробуйте, вон, Озимые запрограммировать :о) - Скрипач(20.10.2013 12:19)
- Если исключить работу с нулевым указателем, то можно и повисеть в ожидании освобождения места в куче, останется вопрос: кто освободит место? Возможно поможет PT_WAIT_THREAD(). - инженегр(20.10.2013 12:19, )
- Лучше висеть. Скрипач(222 знак., 20.10.2013 11:58 - 12:04)
- for(type* tmp = new type; tmp != 0; base_ptr = tmp, tmp = 0) - т.е. если куча закончится, то висим? м.б. следует это как-то иначе обрабатывать? инженегр(53 знак., 20.10.2013 11:44, )
- Так понимаю это попытка изобрести RTOS без стека? тогда перед тем как начать всё прятать за синтаксисом макросов или С++, имеет смысл подумать над элементами синхронизации. Мне кажется существенным недостатком Protothread, то что функция в инженегр(296 знак., 20.10.2013 10:19, )
- В моих задачах (пром.автоматика) экономить сотню-две инструкций в ущерб наглядности и отсутствию побочных эффектов неразумно. Время реакции - 0,1сек. Точнее реагировать бессмысленно. Скрипач(449 знак., 20.10.2013 10:45)
- это Adam Dunkel так идею Simon Tatham проапгрейдил, что у неё заодно появился такой недостаток Vit(287 знак., 20.10.2013 11:08, ссылка)
- Вы невнимательны. Контекст - локальная переменная static int i. Что делать если одинаковый код нужно запустить для нескольких разных контекстов? Несколько копий функции? - Скрипач(20.10.2013 11:48 - 12:01)
- место для хранения по-любому уникально. Vit(157 знак., 20.10.2013 12:18)
- <префикс модуля>? А как его применить если, например, нужно запустить несколько ПИД-регуляторов? - Скрипач(20.10.2013 15:52)
- Префикс удобен когда, например, несколько UART-ов окучить надо. Тогда макросами переназначаются обращения к аппаратно-зависимым регистрам, функции копируются и добавляется префикс модуля (бывает удобно склеивать), тогда может быть даже один Vit(197 знак., 20.10.2013 17:23)
- для однотипных модулей, IMHO, проще размножением параметров. Vit(1703 знак., 20.10.2013 17:08)
- А если кроме ПИД у вас есть еще Гистерезис, несколько типов задержки и еще пяток всякого? Как не крути, наследование красивее получается. Скрипач(476 знак., 20.10.2013 17:25)
- ХЗ, может и красивше. (upd - ещё чуток причесал) Vit(1076 знак., 20.10.2013 17:47 - 18:12)
- Инициализацию параметров не разглядел. А теперь колитесь, как ВНУТРИ PID_run() обращаться к параметру :о) - Скрипач(20.10.2013 18:53 - 18:57)
- Я ж уже показывал --> Vit(586 знак., 20.10.2013 19:11 - 19:14, ссылка)
- Да ладно вам. Я и сам СЕЙЧАС делаю похоже (только не вклеиваю параметры в структуру процесса, передаю отдельно). Скрипач(59 знак., 20.10.2013 19:20)
- Вы начали о контексте - мол кроме переменной состояния нужно тягать ещё и нечто. Я лишь показал, что для этого плюсы, виртуальные методы, рукопашная с кучей и прочая хня не есть необходимость. Я в этих
вашихинтернетахплюсах и не хочу Vit(38 знак., 20.10.2013 19:36, youtube)- Хозяин барин. А я пожалуй буду на плюсы переезжать. - Скрипач(20.10.2013 20:09)
- А я, пожалуй, тоже, только на другие - Cortex-M0+ :) (MKL02Z пощупать хочу) - Vit(20.10.2013 20:27)
- Хозяин барин. А я пожалуй буду на плюсы переезжать. - Скрипач(20.10.2013 20:09)
- Вы начали о контексте - мол кроме переменной состояния нужно тягать ещё и нечто. Я лишь показал, что для этого плюсы, виртуальные методы, рукопашная с кучей и прочая хня не есть необходимость. Я в этих
- Да ладно вам. Я и сам СЕЙЧАС делаю похоже (только не вклеиваю параметры в структуру процесса, передаю отдельно). Скрипач(59 знак., 20.10.2013 19:20)
- Я ж уже показывал --> Vit(586 знак., 20.10.2013 19:11 - 19:14, ссылка)
- Инициализацию параметров не разглядел. А теперь колитесь, как ВНУТРИ PID_run() обращаться к параметру :о) - Скрипач(20.10.2013 18:53 - 18:57)
- А ещё если это частично в X_MACRO засунуть :) инженегр(80 знак., 20.10.2013 17:37, )
- Во всем нужна мера. Особенно в "плюсах" :) - Скрипач(20.10.2013 17:39)
- ХЗ, может и красивше. (upd - ещё чуток причесал) Vit(1076 знак., 20.10.2013 17:47 - 18:12)
- А если кроме ПИД у вас есть еще Гистерезис, несколько типов задержки и еще пяток всякого? Как не крути, наследование красивее получается. Скрипач(476 знак., 20.10.2013 17:25)
- <префикс модуля>? А как его применить если, например, нужно запустить несколько ПИД-регуляторов? - Скрипач(20.10.2013 15:52)
- Передавать функцию this вручную. - fk0(20.10.2013 12:16)
- Сейчас так и делаю. Но, согласитесь, наследование - элегантнее :) - Скрипач(20.10.2013 12:17)
- место для хранения по-любому уникально. Vit(157 знак., 20.10.2013 12:18)
- Вы невнимательны. Контекст - локальная переменная static int i. Что делать если одинаковый код нужно запустить для нескольких разных контекстов? Несколько копий функции? - Скрипач(20.10.2013 11:48 - 12:01)
- это Adam Dunkel так идею Simon Tatham проапгрейдил, что у неё заодно появился такой недостаток Vit(287 знак., 20.10.2013 11:08, ссылка)
- В моих задачах (пром.автоматика) экономить сотню-две инструкций в ущерб наглядности и отсутствию побочных эффектов неразумно. Время реакции - 0,1сек. Точнее реагировать бессмысленно. Скрипач(449 знак., 20.10.2013 10:45)