Комментарии 8
Одно небольшое замечание: Cortex-M — это не архитектура. Это конкретное процессорное ядро. Архитектура называется ARMv7.
+1
Первое — в МК существуют, по меньшей мере, два вида памяти — память программ и память данных и обращение к ним осуществляется разными способами.
Только в случае гарварда. В случае фон-неймановской архитектуры это не так. В случае модифицированного гарварда память для инструкций и данных зачастую общая, но используются разные шины, разные кэши (когда есть, ессно).
+2
Объяснение очень простое. Использование констант таким образом позволяет поиграться с их разными значениями в отладчике, не перепрошивая девайс всякий раз.
0
Не уверен, ведь в данном конкретном случае значение присваивается переменной в тексте, а не вводится из консоли.
0
Ввод с консоли не обязателен. Если компилировать с правильными флагами оптимизации, то компилятор оставит переменную, и большинство отладчиков позволят изменять значение этой переменной во время отладки.
Если же компилировать с максимальной оптимизацией, то я бы ожидал получить одинаковый результат компиляции в обоих случаях: и при переменной и при define.
Если же компилировать с максимальной оптимизацией, то я бы ожидал получить одинаковый результат компиляции в обоих случаях: и при переменной и при define.
0
Сначала я, действуя на автомате, написал, что следует применять #define
Но ведь это не влияет на размещение числа (память кода vs. данных). После препроцессинга и constant propagation, оба варианта будут иметь одинаковое представление в компиляторе. https://godbolt.org/g/3U78GY
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
К вопросу о константах