24.06.2019, 12:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 12.02.2013
Сообщений: 1,038
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Мне кажется что настало время отделить котлеты (объявление с инициализацией переменной с const - такая переменная действительно окажется во флеше) от мух (декларация переменных вызова функции со словом const - это вообще ни разу не обязывает чтобы переменная была во флеше).
|
|
|
|
24.06.2019, 12:14
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
![Весело](images/smilies/icon_laugh.gif) А это уже практика ![Улыбка](images/smilies/icon_smile.gif) так скажем, применение теории на практике.
Сопссна, проведите натурные эксперименты, и милейшим образом убедитесь сами ![Улыбка](images/smilies/icon_smile.gif) Бестолку впустую чето спорить. Если кому-то кажется, что const как-то изменяет передачу параметра, то просто сравните тексты после компиляции - вы увидите полное совпадение до буквы, что с const, что без него.
Вообще, стандартом Си не оговорено поведение компилятора в этом случае. Быть может, есть компиляторы, которые изменяют поведение с const. Не знаю, всего знать не возможно. Но это будет уже чисто фишка компилятора, а не общепринятый закон.
Ну а спорщик собрал в одну кучу ваще всё сразу - и передачу параметров в ф-цию, свойства указателей, квалификаторы const, static, volatile, перепутав их назначения и наделив одни квалификаторы свойствами других. "Всё смешалось, люди, кони, мухи".
Спорит про const, а в качестве примера приводит передачу параметра в ф-цию. Да, конечно указатели многим подпортили нервы ![Улыбка](images/smilies/icon_smile.gif)
Так что прекратите эти бессмысленные споры до момента проведения собственных тщательных натурных испытаний. И если есть чего по делу - просто выкладывайте скрины с ваших экспериментов. А то вы эдак на словах начнете щас утверждать, что массив в ф-цию передается методом полного поэлементного копирования ![Улыбка](images/smilies/icon_smile.gif) ))
Последний раз редактировалось NewWriter; 24.06.2019 в 12:40.
|
|
|
|
24.06.2019, 13:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,629
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от NewWriter
|
А то вы эдак на словах начнете щас утверждать, что массив в ф-цию передается методом полного поэлементного копирования
|
Если массив завернуть в структуру и передавать не указатель на нее, а ее саму, то так и будет…
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
24.06.2019, 14:29
|
|
Прописка
Регистрация: 17.03.2015
Сообщений: 294
Сказал спасибо: 0
Сказали Спасибо 220 раз(а) в 126 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от NewWriter
|
const char *buffer - это указатель на константный буфер, который неизменно находится во флеше (ну раз он константа)
|
Сообщение от NewWriter
|
Да вы что, правда? Наверно в новом чтении приняли поправки в законы Си...
... А const завсегда означал неизменяемую константу
|
А вот Ben Klemens,с Вами немного не согласен (см. рис1).
О чем, Вам и было указано:
Сообщение от OldDriver
|
const, в данном контексте, никакого отношения к месту расположения не имеет.
|
Последний раз редактировалось ProtAS-13; 24.06.2019 в 14:37.
Причина: Добавлена вторая картинка
|
|
|
|
24.06.2019, 14:42
|
|
Прописка
Регистрация: 10.03.2016
Сообщений: 114
Сказал спасибо: 14
Сказали Спасибо 46 раз(а) в 41 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от ProtAS-13
|
О чем, Вам и было указано
|
Расслабьтесь. Эти два упыря и Кернигану не помолятся, и об Ричи разобьются, и халом изойдутся, но собственной неграмотности так и не признают. Но со стороны это выглядит очень даже весело.
|
|
|
|
24.06.2019, 15:02
|
|
Вид на жительство
Регистрация: 27.11.2007
Сообщений: 429
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от ProtAS-13
|
А вот Ben Klemens,с Вами немного не согласен (см. рис1).
|
Пример не очень корректно относится к теме - изначально "а" не константа.
А вот если
PHP код:
|
const int a[10]={0,0,0,0,0,0,0,0,0,0};
int *b=a;
set_elmt(a,b);
|
Цитата:
|
initialization discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers]
|
Т.е. компилятор предупреждает, что данные могут измениться и убирает определение константы.
А в приведенном выше примере, запрещается изменение "b" - мало ли для чего такое может понадобиться.
О чем вообще спор? Если константа, то хоть ее передавай, хоть указатель на нее - она неизменна. И кроме свойства ее неизменности, она еще несет свойство экономии памяти. Для нее не выделяется место в памяти данных. Она остается в теле программы, в нашем случае во флеше. Хоть это микроконтроллеры, хоть где. Поправьте меня если это не так.
|
|
|
|
24.06.2019, 15:11
|
|
Прописка
Регистрация: 10.03.2016
Сообщений: 114
Сказал спасибо: 14
Сказали Спасибо 46 раз(а) в 41 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от sat_art
|
И кроме свойства ее неизменности, она еще несет свойство экономии памяти. Для нее не выделяется место в памяти данных. Она остается в теле программы, в нашем случае во флеше. Хоть это микроконтроллеры, хоть где. Поправьте меня если это не так.
|
Ну и сколько можно вас ещё поправлять?
|
|
|
|
24.06.2019, 15:14
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Слуште, заманали писать много букв. Я же сказал - скрины с натурными экспериментами - фстудию. А я уж любому наглядно объясню, кто тут упырь. Особенно всяким болтливым старпёрам - эту уж ваще не проблема
|
|
|
|
24.06.2019, 15:15
|
|
Вид на жительство
Регистрация: 27.11.2007
Сообщений: 429
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от scorpi_0n
|
Ну и сколько можно вас ещё поправлять?
|
Меня Вы еще не поправляли.
|
|
|
|
24.06.2019, 15:26
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Между прочим, никто и не утверждал, что const защищает стопроцентно данные. Защищать данные может только аппаратный MPU. Про const вы развели какую-то хню, потеряв первоначальный смысл вообще.
Поэтому, прекратите бессмысленный спор. Хотите что-то сказать? Выкладывайте скрины с натурных экспериментов. Всё остальные слова - не больше чем ветер в поле.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:17.
|
|