-
- Использование указателей не спасает. Это я уже пробовал. Если значение константы известно на этапе компиляции, то компилятор подставляет это значение по месту использования при любом способе обращения к константе. - rezident(28.03.2013 15:07)
- Что-то это мне напоминает Vit(259 знак., 28.03.2013 17:06)
- А пробовали volatile const? Думаю это именно то - константа значение которой нельзя подставлять и кешировать. - amx(28.03.2013 15:38)
- [РЕШЕНО] Через указатель получилось! :) ih(284 знак., 19.04.2017 13:44 - 13:48)
- 4 года и проблема решена :)))) Codavr(46 знак., 19.04.2017 16:30)
- Компилятор не разрешает потому, что по смыслу это две противоположности - переменная не может быть одновременно изменчивой (volatile) и неизменной (constant). rezident(276 знак., 28.03.2013 15:43)
- А разве read-only регистр (например периферии) не ложится на это определение как родной? amx(368 знак., 28.03.2013 15:46 - 15:54, ссылка)
- Кстати, да, даже в стандарте есть такой пример. SciFi(321 знак., 28.03.2013 15:56)
- Дык тут компилятор ругается на инициализированную константу. Говорит, что
либо крест сними, либо трусы наденьтакое сочетание квалификаторов только для неинициализированной константы допустимо. - rezident(28.03.2013 17:09)- Дык внутри модуля без volatile напиши и проинициализируй, а в *.h файле включаемом в другие модули -- extern const volatile... - fk0(28.03.2013 17:58)
- Хренасе. От товарища в буденовке такого не ожидал. Это ж будет индусский говнокод тогда: не по
уставустандарту ни разу. - SciFi(28.03.2013 18:08)- А где отступление от стандарта-то? Не на всех платформах заработает (гарвардская архитектура не позволит, где const==flash, например pic18). - fk0(28.03.2013 18:57)
- это чалма - Snaky(28.03.2013 18:10)
- foil helmet. - fk0(28.03.2013 18:57)
- Вы явно не читали эту ветку с начала :) - rezident(28.03.2013 18:02)
- Хренасе. От товарища в буденовке такого не ожидал. Это ж будет индусский говнокод тогда: не по
- Дык внутри модуля без volatile напиши и проинициализируй, а в *.h файле включаемом в другие модули -- extern const volatile... - fk0(28.03.2013 17:58)
- Дык тут компилятор ругается на инициализированную константу. Говорит, что
- Регистр быть может. Для структуры констант (как у меня) не катит почему-то. - rezident(28.03.2013 15:55)
- Кстати, да, даже в стандарте есть такой пример. SciFi(321 знак., 28.03.2013 15:56)
- А разве read-only регистр (например периферии) не ложится на это определение как родной? amx(368 знак., 28.03.2013 15:46 - 15:54, ссылка)
- [РЕШЕНО] Через указатель получилось! :) ih(284 знак., 19.04.2017 13:44 - 13:48)
- Так в том случае, если константы выносятся в отдельный файл, то компилятор их не знает во время компиляции остальных файлов. vmp(197 знак., 28.03.2013 15:21)
- Враки. Вы даже не попробовали мой вариант. - SciFi(28.03.2013 15:09)
- Попробовал. rezident(1343 знак., 28.03.2013 15:26 - 15:29)
- Во-первых, SciFi(260 знак., 28.03.2013 15:30)
- Да, без прагмы компилируется без ошибок. - rezident(28.03.2013 15:57)
- Ну теперь можно начинать пляски с бубном: как поиметь профит от этой прагмы и не потерять профит от стандарта Си. SciFi(346 знак., 28.03.2013 16:00 - 16:03)
- +1. Вместо явного указания адреса в программе предпочитаю в программе задать имя сегмента (#pragma location="имя_сегмента"), а его расположение указать в линкере в *.icf - файле (если для ARM). - vmp(28.03.2013 15:52)
- Да, похоже использование #pragma constseg = INFOA вместо #pragma location = 0x1000 избавило от ошибки определения. Надо будет поглубже покопать в этом направлении, когда будет время. - rezident(28.03.2013 16:22)
- Все обсуждают ошибки компилятора, а ведь нормальный линкер по сложности ненамного уступает компилятору. - vmp(28.03.2013 16:30)
- Гы-гы. Размер исполняемого файла - неплохая мера сложности: SciFi(240 знак., 28.03.2013 16:47 - 16:49)
- Все обсуждают ошибки компилятора, а ведь нормальный линкер по сложности ненамного уступает компилятору. - vmp(28.03.2013 16:30)
- Да, похоже использование #pragma constseg = INFOA вместо #pragma location = 0x1000 избавило от ошибки определения. Надо будет поглубже покопать в этом направлении, когда будет время. - rezident(28.03.2013 16:22)
- Да, без прагмы компилируется без ошибок. - rezident(28.03.2013 15:57)
- Во-первых, SciFi(260 знак., 28.03.2013 15:30)
- Попробовал. rezident(1343 знак., 28.03.2013 15:26 - 15:29)
- Использование указателей не спасает. Это я уже пробовал. Если значение константы известно на этапе компиляции, то компилятор подставляет это значение по месту использования при любом способе обращения к константе. - rezident(28.03.2013 15:07)