локальная статическая переменная предоставляется встроенными компиляторами?

я работаю над c lib, что было бы неплохо также работать со встроенными системами, но я не очень глубоко разбираюсь в разработке встроенных систем, поэтому мой вопрос

большинство встроенных компиляторов могут справляться с локальными статическими переменными, которые я бы просто предположил при дальнейшей разработке ИЛИ есть ли #define, который я могу использовать для #ifdef для создания глобальной переменной в случае

спасибо


person John Doe    schedule 11.02.2010    source источник


Ответы (4)


Они должны, поскольку локальные статические переменные являются частью стандарта C.

Конечно, ничто не мешает им создать Си-подобный язык, не обладающий всеми функциями. Но поскольку это было бы нестандартно, то и способ определить, что функция отсутствует, также будет нестандартным.

person R Samuel Klatchko    schedule 11.02.2010

Поскольку переменные static являются частью стандарта, вы должны быть в безопасности.

Проблема с поддержкой, вероятно, заключается не в вашем компиляторе (большинство из которых довольно хорошо справляется со стандартом), а в любом коде, который вам нужно настроить для среды выполнения. Убедитесь, что при загрузке кода вы правильно распаковываете исполняемый файл, данные только для чтения, данные для чтения и записи и разделы с нулевой инициализацией исполняемого файла, прежде чем переходить к коду C.

person Carl Norum    schedule 11.02.2010

Локальные статические переменные являются частью стандарта C, так что да.

\педантичный{

Если ваш код хорошо организован, с отдельными файлами (модулями компиляции) для разных подсистем, вам может быть лучше иметь статическую переменную с файловой областью. Это упростит разложение кода, использующего его, на отдельные функции. Если код, использующий переменную, сложен, это позволит вам разделить его на более мелкие статические функции, которые легче читать, понимать и отлаживать.

}

person Tim Schaeffer    schedule 11.02.2010

Да. локальная статика на самом деле не сильно отличается от глобальной, как только компилятор закончит пережевывать ваш исходный код. Я мог бы придумать экзотические процессоры, в которых глобальные значения были бы проблемой, но я сомневаюсь, что вы столкнетесь со многими.

Действительно интересная вещь о глобальных переменных во встроенных процессорах заключается в том, что у вас часто есть возможность, чтобы компилятор размещал их в ПЗУ, EEPROM и т. д.

person T.E.D.    schedule 11.02.2010