Два вопроса для Вас "С" гуру

G

GrandAlf

Guest
По относительному новичку на C, у меня есть пара вопросов, которые, возможно, кто-то может enlignten меня.Во-первых, когда переменная объявляется вне каких-либо функций, я прочел, что она также должна быть объявлена в любую функцию, которая использует его.Я обнаружил, что он работает просто прекрасно работать и без этого, кто знают, почему это должны быть требования?.Кроме того, при использовании ОС реального времени, и если у меня есть функция в задачу, которая не использует внешних факторов, можно назвать это как нормальную функцию, или есть какие-либо проблемы в сроках прохождения данных взад и вперед.

Любые мнения благодарностью.

 
когда переменная объявлена вне функции она является глобальной переменной, и могут быть переданы или какой-либо функции, если переменная объявлена внутри функции, она является локальной для этой функции в одиночку.
У не придется повторно объявить gloval функции внутри какой-либо другой FN когда у передать переменную использует его.

Поправьте меня, если неправильно IAM

 
Я согласен с вами EcraZ, они отлично работает, например, его только что в ANSI C книгу, он говорит, внешняя переменная должна быть объявлена в funcions, что их использовать?.Beats меня!

 
внешние переменные, объявленные в одном файле, но в другой файл, компилятор должен знать, что переменная объявленная в другой файл, и поэтому используется наружный

например
file1.c

наружный INT A; / /
А в этом файле, но заявили someother файл
INT B;

функции органа;

file2.c

наружный INT б / / б, используемых в этом файле объявил другой файл
INT A;

функции органа;

 
Ahh,
как я понимаю сейчас.Нам жить и учиться.
Спасибо
EcraZ

 
Будьте осторожны при объявлении локальных и глобальных переменных, используя те же имя, поскольку при изменении переменной внутри функции с локальной переменной изменяется только значение локальной переменной, а не одного из глобальных.
За дополнительной информацией, пожалуйста, в некоторых C главы книги, которая охватывает сферу переменных.
Надеюсь, что это помогло,
Maddin

 
Собственно Существуют 3 вида декларации (если я не worng те colled хранения спецификаторы в C):
GLOBAL - определяется в файле без статического по ключевому слову.Есть возможность ведения его от других файлов.Выделения памяти во время компиляции.
Static - статическая с определенными ключевыми словами.Только в файле, где оно определяется можете обратиться к нему.Память распределение осуществляется во время компиляции
временный характер.Определенные функции.Только когда эта функция VAR определяется можете обратиться к этой переменной.
Распределение производится в течение функция cacll и ususally в стеке место памяти.

Если вы wqould как определить VAR вне функции вы должны обеспечить следующее:
a.если не может быть 2 функции вызовов одновременно
(прерывание или ОС реального времени случаев),
имеется possiblity что не будет помех и один вызов функции может изменить его значение, а другой функции вызова, не ожидая, чтобы это.В этом случае fucntion называется nonreentrant.Чтобы иметь возможность функционировать входящий угол (более чем на один звонок за тот же fucntion в то же время), вы должны:
1.определить, как временная ВАР (стек определен)
2.Если вы используете статические или глобальные переменные, защищать доступ к этим ВАР через отключить прерывания при доступе к этим и позволило в конце концов работа с теми, это было сделано.

 
Спасибо, ребята, я, похоже, поняли разницу между статическими и глобальном.Также спасибо за указав возможные probs ОС реального времени.Высокую оценку.

 

Welcome to EDABoard.com

Sponsor

Back
Top