-
- Забавно. Структура инициализировалась среди прочего адресами переменных. Среди переменных встречались массивы, индексы которых задавались как енумы из класса, например: &PRA.ITG_FS[PRA.Pls], где Pls - элемент енума в экземпляре класса PRA. Дык ASDFS(218 знак., 06.08.2014 13:49)
- А никто не обещал, что все возможности оптимизации будут использованы компилятором. Если будете и дальше так испытывать его терпение, он ещё где-нибудь взбрыкнёт :-) - SciFi(06.08.2014 14:04)
- "никак не связанных с этой структурой" (C) - Codavr(06.08.2014 13:57)
- Дык эта, я не понял, это бага или фича и чья именно? - ASDFS(06.08.2014 14:55)
- Это не может быть багой, т.к. стандарт языка не обещает хранить в ПЗУ что-либо. Остаётся только надеяться на благосклонность компилятора. - SciFi(06.08.2014 15:54)
- Стандарт не при делах, это ИАР обещает: Static and global objects declared const are allocated in ROM. В данном случае имеем случай global. - ASDFS(06.08.2014 16:19)
- Тогда уж читайте до конца: "In C++, objects that require runtime initialization cannot be placed in ROM". - SciFi(06.08.2014 16:26)
- Каким боком к теме? Структура объявлена глобально вне всяких классов. Енум вообще не требует никакой инициализации ибо не создает переменной и не имеет адреса. Не? - ASDFS(06.08.2014 17:18)
- Я думаю, это надо понимать вот как: "objects that the compiler thinks might require runtime initialization will not be placed in ROM". SciFi(169 знак., 06.08.2014 18:17)
- То есть вы за квалификацию ситуации как недоработку компилятора, граничащую с багой. Ну не знает компилятор что енум переменной не является. - ASDFS(06.08.2014 18:49)
- Да, я за эту версию. Они в этом цэ-плюс-плюс столько наворотили, что ни один компиляторостроитель не уследит. - SciFi(06.08.2014 23:33)
- Как компилятор может не знать про enum? - Apтём(06.08.2014 18:56)
- Видимо, программисты не объяснили. - ASDFS(06.08.2014 19:16)
- То есть вы за квалификацию ситуации как недоработку компилятора, граничащую с багой. Ну не знает компилятор что енум переменной не является. - ASDFS(06.08.2014 18:49)
- Я думаю, это надо понимать вот как: "objects that the compiler thinks might require runtime initialization will not be placed in ROM". SciFi(169 знак., 06.08.2014 18:17)
- Каким боком к теме? Структура объявлена глобально вне всяких классов. Енум вообще не требует никакой инициализации ибо не создает переменной и не имеет адреса. Не? - ASDFS(06.08.2014 17:18)
- Тогда уж читайте до конца: "In C++, objects that require runtime initialization cannot be placed in ROM". - SciFi(06.08.2014 16:26)
- Стандарт не при делах, это ИАР обещает: Static and global objects declared const are allocated in ROM. В данном случае имеем случай global. - ASDFS(06.08.2014 16:19)
- Я полагаю что собака порылась в том как у тебя объявлены PRA и TPRA. Без этого хрен поймешь. - Codavr(06.08.2014 15:40)
- Как то так ASDFS(152 знак., 06.08.2014 16:15)
- Может у тебя "In C++, objects that require runtime initialization cannot be placed in ROM." Codavr(169 знак., 06.08.2014 16:41 - 16:57)
- Компилятору глубоко пофиг инициализированы ITG_FS[0] или нет, ему нужен только адрес этих переменных. Его вполне можно во флешь на этапе компиляции. ASDFS(118 знак., 06.08.2014 17:21)
- С какого это хрена пофиг. Ты говоришь компилятору положи ка родной в ROM массив из двух цифирей не говоришь каких цифирей класть. Он хочет знать наверняка чего ему туда запихать, ибо он их в рантайме положить туда уже не может. Ты не говоришь, он Codavr(173 знак., 06.08.2014 23:29 - 23:33)
- Смотрим внимательно, вспоминаем Си. Структура инициализируется адресом переменной, а не ее значением. Адрес никак не может быть неизвестен на этапе компиляции. - ASDFS(07.08.2014 00:02)
- Вот только не надо заклинаний. Как мы на днях смотрели в стандарте Си, элементы структуры кладутся по порядочку начиная с первого. Если у тебя имеется в структуре массив, то все элементы массива должны лежать там же по порядочку. А ты их НЕ Codavr(109 знак., 07.08.2014 00:12 - 00:15)
- Тебя клинит. Забыл рюмашку опрокинуть в конце дня, вот мозг без топлива и остался? ASDFS(101 знак., 07.08.2014 00:15)
- Если желаешь хамить то иди на хуй. - Codavr(07.08.2014 00:16)
- Не обижайся, я не злой! ASDFS(55 знак., 07.08.2014 00:18)
- Вначале найди у себя этот славный значок Codavr(07.08.2014 00:20)
- Он двадцатью строчками выше. >>>> ASDFS(176 знак., 07.08.2014 00:26, ссылка)
- У тебя в ROM структура не кладется или то что двадцатью строчками выше? Codavr(179 знак., 07.08.2014 00:28 - 00:32)
- то что двадцатью строчками выше - элемент инициализации структуры, которая впервые на арене тут: ASDFS(132 знак., 07.08.2014 00:39)
- Кормилец. Не прошло и года. Ну ты разбирайся, а я рюмашку опрокину и на боковую. - Codavr(07.08.2014 00:41)
- Сладких тебе снов про мою структуру. - ASDFS(07.08.2014 00:58)
- Кормилец. Не прошло и года. Ну ты разбирайся, а я рюмашку опрокину и на боковую. - Codavr(07.08.2014 00:41)
- то что двадцатью строчками выше - элемент инициализации структуры, которая впервые на арене тут: ASDFS(132 знак., 07.08.2014 00:39)
- У тебя в ROM структура не кладется или то что двадцатью строчками выше? Codavr(179 знак., 07.08.2014 00:28 - 00:32)
- Он двадцатью строчками выше. >>>> ASDFS(176 знак., 07.08.2014 00:26, ссылка)
- Вначале найди у себя этот славный значок Codavr(07.08.2014 00:20)
- Не обижайся, я не злой! ASDFS(55 знак., 07.08.2014 00:18)
- Если желаешь хамить то иди на хуй. - Codavr(07.08.2014 00:16)
- Тебя клинит. Забыл рюмашку опрокинуть в конце дня, вот мозг без топлива и остался? ASDFS(101 знак., 07.08.2014 00:15)
- Вот только не надо заклинаний. Как мы на днях смотрели в стандарте Си, элементы структуры кладутся по порядочку начиная с первого. Если у тебя имеется в структуре массив, то все элементы массива должны лежать там же по порядочку. А ты их НЕ Codavr(109 знак., 07.08.2014 00:12 - 00:15)
- Смотрим внимательно, вспоминаем Си. Структура инициализируется адресом переменной, а не ее значением. Адрес никак не может быть неизвестен на этапе компиляции. - ASDFS(07.08.2014 00:02)
- С какого это хрена пофиг. Ты говоришь компилятору положи ка родной в ROM массив из двух цифирей не говоришь каких цифирей класть. Он хочет знать наверняка чего ему туда запихать, ибо он их в рантайме положить туда уже не может. Ты не говоришь, он Codavr(173 знак., 06.08.2014 23:29 - 23:33)
- Указать можно, но инициализировать всё равно надо. Нет? - Apтём(06.08.2014 16:59)
- Ну если он неинициализован, то что компилер должен туда прописать? Я не знаю, компилеру тоже не сообщили. - Codavr(06.08.2014 17:02)
- Компилер ошибку выдаст на такое наверное. - Apтём(06.08.2014 17:04)
- По идее должен обматерить. - Codavr(06.08.2014 17:10)
- Компилер ошибку выдаст на такое наверное. - Apтём(06.08.2014 17:04)
- Ну если он неинициализован, то что компилер должен туда прописать? Я не знаю, компилеру тоже не сообщили. - Codavr(06.08.2014 17:02)
- Компилятору глубоко пофиг инициализированы ITG_FS[0] или нет, ему нужен только адрес этих переменных. Его вполне можно во флешь на этапе компиляции. ASDFS(118 знак., 06.08.2014 17:21)
- Может у тебя "In C++, objects that require runtime initialization cannot be placed in ROM." Codavr(169 знак., 06.08.2014 16:41 - 16:57)
- Как то так ASDFS(152 знак., 06.08.2014 16:15)
- Это не может быть багой, т.к. стандарт языка не обещает хранить в ПЗУ что-либо. Остаётся только надеяться на благосклонность компилятора. - SciFi(06.08.2014 15:54)
- Дык эта, я не понял, это бага или фича и чья именно? - ASDFS(06.08.2014 14:55)
- Про ИАР не знаю, но в Кейле глобальные переменные, структуры, объявленные как const распалогаются во флэш, а вот если внутри функции их объявить, то они распалогаются в ОЗУ и инициализируются из флэшь. А вот если внутри функции их объявить как VAI(50 знак., 06.08.2014 12:15)
- В структуре есть указатели на данные из других файлов? Искать, занулив инициализаторы и постепенно их возвращая. - vmp(06.08.2014 08:40)
- Декларацию структуры в студию. И смотри листинг (.lst) от того .c файла в котором структура -- в какую секцию кладёт? - fk0123(06.08.2014 07:42, )
- В доке сказано, что во флеш он помещает static const. - Codavr(06.08.2014 03:45)
- Не ври, там не так написано -> - SciFi(06.08.2014 08:33, ссылка)
- Тогда получается, что глобальную переменную нельзя положить во флэш? - Vladimir Ljaschko(06.08.2014 04:03)
- Забавно. Структура инициализировалась среди прочего адресами переменных. Среди переменных встречались массивы, индексы которых задавались как енумы из класса, например: &PRA.ITG_FS[PRA.Pls], где Pls - элемент енума в экземпляре класса PRA. Дык ASDFS(218 знак., 06.08.2014 13:49)