реклама на сайте
подробности

 
 
> scmRTOS и IAR EWAVR 4.30
IgorKossak
сообщение Jun 16 2007, 10:42
Сообщение #1


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Скомпилировал сабж и, в отличие от версии IAR 4.21, получил несколько ремарок, касающихся кастинга (Pe1375,Pa091).
Чтобы глаза не мозолили, просто запретил выдавать диагностику на эти ремарки.
Но сомнения гложат, ведь не спроста же они появились. Новая версия IAR стала строже ко всему относиться.
Каким образом можно корректно обойти эти проблемы, чтобы не напороться на неприятности с переносимостью?
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
IgorKossak
сообщение Jun 17 2007, 19:46
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Посмотрел полученный код и, несмотря на ругань, всё получается правильно при любой оптимизации.
Так что пока запретил выдавать эти сообщения во всем проекте. Далее если будет не лень обрамлю проблемные строки соответствующими прагмами.
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 18 2007, 05:18
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(IgorKossak @ Jun 18 2007, 02:46) *
Посмотрел полученный код и, несмотря на ругань, всё получается правильно при любой оптимизации.

Да там и нет причин, чтоб не работало. smile.gif

Цитата(IgorKossak @ Jun 18 2007, 02:46) *
Так что пока запретил выдавать эти сообщения во всем проекте. Далее если будет не лень обрамлю проблемные строки соответствующими прагмами.

Когда-то когда ремарки только появились, я тоже начал ими пользоваться, надеясь и полагая, что они помогут писать более логичный и безопасный код, но очень быстро от них отказался по причине того, что частенько замечания выдавались не по делу (как и рассматриваемом случае), зато более серьезные места оставлены без внимания. Например, в контексте scmRTOS: есть момент, когда в конструкторах объектов производится запись в таблицу процессов (регистрация процессов в ядре), таблица процессов размещена в объекте Kernel, который сам является объектом класса, у которого тоже есть конструктор. В виду всего этого существует потенциальная опасность зависимости от порядка инициализации, т.к. вызов конструкторов из разных единиц компиляции неопределен. И неприятности могли бы быть в полный рост, если бы объект Kernel имел не static storage duration и/или производил бы обращение (инициализацию) к таблице процессов в конструкторе. Но ни того, ни другого там нет, таблица существует статически, в конструкторе объекта Kernel к ней обращений не производится, поэтому проблем нет. Но момент заслуживает самого серьезного внимания.

Тем не менее компилятор из состава VisualDSP++ v4.5 (для Blackfin'а) этот момент засек и выдает соответствующее предупреждение (даже не замечание). А вот IAR этого не замечает даже на уровне ремарок. Поэтому я бы рекомендовал сильно не надеяться на IAR'овские ремарки и придавать им большого значения. Имхо, самый правильный способ их использования - включать иногда, дабы посмотреть, что он там нашел, и, если момент застуживает внимания, пофиксить его. Но при постоянной работе выключать их совсем чтобы глаза не мозолили и не мешали наблюдать за более серъезными сообщениями.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 19:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01385 секунд с 7
ELECTRONIX ©2004-2016