изменчивая переменная, использующая при создании приложения

Я новичок в этой области. Раньше я занимался программированием микроcontrollerов, где использовал изменчивые переменные, чтобы избежать оптимизации компилятора. Но я никогда не видел такую ​​волатильную декларацию перед объявлением переменной. Означает ли это, что компиляция выполняется без какой-либо оптимизации в сборке Arago. Здесь у меня есть два вопроса.

  1. Как включить различные типы оптимизации во время компиляции, такие как оптимизация скорости и пространства в сборке Angstrom?

  2. Если это уже оптимизированная компиляция, почему нам не нужны изменчивые объявления?

Если вы используете gcc для компиляции, добавьте / измените CFLAGS

  • -O2 или -O3 чтобы обеспечить набор общих оптимизаций производительности.

  • Os чтобы включить оптимизацию размера кода.

Здесь доступен длинный список флагов, которые контролируют отдельные параметры оптимизации компилятора gcc.


Чаще всего volatile используется НЕ для оптимизации кода, но для обеспечения достоверности данных .

Объявление переменной как volatile сообщает компилятору, что переменная может быть изменена в любое время извне к реализации посредством

  • операционная система
  • другой stream исполнения
    – процедура прерывания
    – обработчик сигналов
  • базовое оборудование

Поскольку значение переменной volatile-qual может меняться в любое время, фактическая переменная всегда должна быть доступна всякий раз, когда на переменную ссылается код.

Это означает, что компилятор не может выполнять оптимизацию по переменной. Маркировка переменной volatile заставляет компилятор генерировать код, который игнорирует переменную в регистре CPU и фактически читает базовый регистр памяти / аппаратного обеспечения, отображаемый по адресу, указанному переменной.

Также проверьте различные аспекты использования volatile наряду с оптимизацией компилятора .