-
- Может есть литература (статьи) на эту тему? - leon_(25.08.2009 22:41)
- # должен быть только в начале строки. далее # относится к склейке. о вложенности уже сказали. Vit(173 знак., 24.08.2009 14:16)
- Я хочу макрос, при вызове которого задаются несколько других макросов. - il-2(24.08.2009 16:19)
- Ну дык чем #if defined не годится? Vit(274 знак., 24.08.2009 16:31)
- Иногда нужно. Например, при описании структур в EEPROM типа как у меня BACKUP_AREA ( proc_history, 100 ) желательно иметь возможность обращаться к этим 100 по человеческому имени PROC_HISTORY_QTY, т.е. сгенерировать макрос #define PROC_HISTORY_QTY 100. - Vladimir Ljaschko(24.08.2009 16:50)
- А если генерировать const int PROC_HISTORY_QTY = 100; Или через enum {PROC_HISTORY_QTY = 100;}; - vmp(24.08.2009 17:53)
- enum работает, спасибо - Vladimir Ljaschko(27.08.2009 07:45)
- Да, const и использовал. Но занимает место в памяти, хотя и некритично. А enum - интересная идея, нужно попробовать. - Vladimir Ljaschko(24.08.2009 18:09)
- const нужно использовать в режиме С++ или явно писать static, чтобы компилятор имел право соптимизировать. - vmp(24.08.2009 18:17)
- ОК, static обязательно попробую. - Vladimir Ljaschko(24.08.2009 18:24)
- const нужно использовать в режиме С++ или явно писать static, чтобы компилятор имел право соптимизировать. - vmp(24.08.2009 18:17)
- Непонятно, зачем этот макрос генерировать? - AlexBi(24.08.2009 17:13)
- Боюсь, что если Вы не используете широко переопределяемые макросы для разворачивания различных объектов, я не смогу объяснить. "Вещь в себе", но удобно. - Vladimir Ljaschko(24.08.2009 17:27)
- Всё-равно не понимаю о чём речь. Vit(535 знак., 25.08.2009 01:20)
- Где-то значение задавать надо, и желательно, чтобы это "где-то" было в параметрах макроса - для обеспечения идеальной читаемости текста. Вопрос именно так - как присвоить этому значению человеческое имя. Vladimir Ljaschko(1217 знак., 25.08.2009 10:50)
- Что такое "определяем области EEPROM"? Зачем вообще массивы пихать в структуры? Ладно, на безрыбье, но всё-таки зачем? Vit(1433 знак., 25.08.2009 12:48)
- Ну как же... SETUP в ОЗУ один, а в EEPROM может быть три - основной, резервный и суперрезервный. История входов в сервисный режим - два десятка. Т.е. структура данных о входе (время, логин, контрольная сумма) -> массив структур в EEPROM -> структур Vladimir Ljaschko(37 знак., 25.08.2009 15:09)
- Мне кажется путается святое с праведным;) - описание + хранение настроек и описание + хранение архива вмешательств - и то и то смесь ужа и ежа. Vit(1401 знак., 25.08.2009 16:36)
- А я частный случай совпадения размеров записи структуры и использую. Все достаточно удобно. Функции промежуточного уровня доступа к архиву имеет два параметра - тип записи (enum одного из параметров макросов) и номер записи этого типа (например, Vladimir Ljaschko(918 знак., 25.08.2009 18:06)
- Понял так, что контрольную сумму храните в ОЗУ? Или у Вас чегой-то типа LRC? А то ведь КС (не подобие) нужна сразу после записи последнего "полезного" байта для записи её самой, после - нет её уже. А после чтения последнего "полезного" байта из Vit(99 знак., 25.08.2009 18:33)
- Ага. А иначе как - или дописывать отдельной записью(ресурс в два раза меньше), или в стеке полный пакет собирать, или на лету в нижнем уровне добавлять. Непрозрачно все. - Vladimir Ljaschko(25.08.2009 18:42)
- ИМХО, только на лету - Vit(25.08.2009 18:48)
- Ага. А иначе как - или дописывать отдельной записью(ресурс в два раза меньше), или в стеке полный пакет собирать, или на лету в нижнем уровне добавлять. Непрозрачно все. - Vladimir Ljaschko(25.08.2009 18:42)
- Понял так, что контрольную сумму храните в ОЗУ? Или у Вас чегой-то типа LRC? А то ведь КС (не подобие) нужна сразу после записи последнего "полезного" байта для записи её самой, после - нет её уже. А после чтения последнего "полезного" байта из Vit(99 знак., 25.08.2009 18:33)
- А я частный случай совпадения размеров записи структуры и использую. Все достаточно удобно. Функции промежуточного уровня доступа к архиву имеет два параметра - тип записи (enum одного из параметров макросов) и номер записи этого типа (например, Vladimir Ljaschko(918 знак., 25.08.2009 18:06)
- Мне кажется путается святое с праведным;) - описание + хранение настроек и описание + хранение архива вмешательств - и то и то смесь ужа и ежа. Vit(1401 знак., 25.08.2009 16:36)
- Ну как же... SETUP в ОЗУ один, а в EEPROM может быть три - основной, резервный и суперрезервный. История входов в сервисный режим - два десятка. Т.е. структура данных о входе (время, логин, контрольная сумма) -> массив структур в EEPROM -> структур Vladimir Ljaschko(37 знак., 25.08.2009 15:09)
- Число элементов в массиве: #define ARRSIZE(arr) (sizeof(arr)/sizeof(arr[0])) - vmp(25.08.2009 11:28)
- Что такое "определяем области EEPROM"? Зачем вообще массивы пихать в структуры? Ладно, на безрыбье, но всё-таки зачем? Vit(1433 знак., 25.08.2009 12:48)
- Похоже, что я понял, что хочется. AlexBi(245 знак., 25.08.2009 10:24)
- Ага - Vladimir Ljaschko(25.08.2009 10:51)
- Где-то значение задавать надо, и желательно, чтобы это "где-то" было в параметрах макроса - для обеспечения идеальной читаемости текста. Вопрос именно так - как присвоить этому значению человеческое имя. Vladimir Ljaschko(1217 знак., 25.08.2009 10:50)
- Есть пример? - AlexBi(24.08.2009 17:46)
- Ну вот здесь начало. - Vladimir Ljaschko(24.08.2009 18:06, ссылка)
- Всё-равно не понимаю о чём речь. Vit(535 знак., 25.08.2009 01:20)
- Боюсь, что если Вы не используете широко переопределяемые макросы для разворачивания различных объектов, я не смогу объяснить. "Вещь в себе", но удобно. - Vladimir Ljaschko(24.08.2009 17:27)
- А если генерировать const int PROC_HISTORY_QTY = 100; Или через enum {PROC_HISTORY_QTY = 100;}; - vmp(24.08.2009 17:53)
- Не вижу здесь вызова макроса, при котором задаются другие макросы. А вообщем вопрос уже снят. Раз нельзя сделать, так и не зачем. - il-2(24.08.2009 16:41)
- Иногда нужно. Например, при описании структур в EEPROM типа как у меня BACKUP_AREA ( proc_history, 100 ) желательно иметь возможность обращаться к этим 100 по человеческому имени PROC_HISTORY_QTY, т.е. сгенерировать макрос #define PROC_HISTORY_QTY 100. - Vladimir Ljaschko(24.08.2009 16:50)
- "Хотеть не вредно". Я пытался найти подобное решение, но обошелся массивом констант. - Vladimir Ljaschko(24.08.2009 16:26)
- #ifdef ... #endif ?? - Snaky(24.08.2009 16:24)
- Ну дык чем #if defined не годится? Vit(274 знак., 24.08.2009 16:31)
- Я хочу макрос, при вызове которого задаются несколько других макросов. - il-2(24.08.2009 16:19)
- Если в скобки взять круглые ? - Ruslan(24.08.2009 11:51)
- здрасте, разве макросы могут быть вложенными? - Alex B.(24.08.2009 12:01)
- я наврал :( - Ruslan(24.08.2009 12:06)
- здрасте, разве макросы могут быть вложенными? - Alex B.(24.08.2009 12:01)