|
Использование static переменных |
|
|
|
 |
Ответов
|
Oct 8 2010, 11:52
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(aesok @ Oct 8 2010, 16:02)  Проверте сами, может ли компилятор выкинуть static перемную.
Скомпилируйте код. Я бы на месте оптимизатора ее выкинул. Или по крайней мере запись в нее. "Не болтайте ерундой!"  Не может и не должен компилятор выкидывать эту переменную. Она же static, хоть и объявлена внутри функции. Под нее обязательно выделяется ОЗУ и она очищается при стартапе, но область видимости этой переменной - только внутри данной функции. Присвоение значения тоже не выкидывается, т.к. по сути это инициализация ее. А вот в следующем случае компилятор наверняка оставит только последнее действие. Код void foo (void) { static int a; a = 1; a = 2; a = 3; } И вот в таком случае цикл с проверкой на условие скорее всего заменится на бесконечный цикл. Особенно, если foo1 и foo2 будут в разных единицах (файлах) компиляции. Код static unsigned int cntr;
void foo1 (void) { cntr--; }
void foo2 (void) { cntr=100; while (cntr!=0) foo1(); }
|
|
|
|
Сообщений в этой теме
777777 Использование static переменных Oct 7 2010, 15:41 rezident Не совсем понятно из какого топика вырвана эта цит... Oct 7 2010, 16:14 777777 Цитата(rezident @ Oct 7 2010, 20:14) Не с... Oct 7 2010, 16:32  rezident Цитата(777777 @ Oct 7 2010, 22:32) И обра... Oct 7 2010, 16:43 Сергей Борщ Цитата(777777 @ Oct 7 2010, 18:41) Насчет... Oct 7 2010, 17:11 777777 Ну раз пошла такая пьянка (с привлечением стандарт... Oct 8 2010, 09:46  aesok Цитата(777777 @ Oct 8 2010, 13:46) Таким ... Oct 8 2010, 10:02   777777 Цитата(aesok @ Oct 8 2010, 14:02) Проверт... Oct 8 2010, 10:16    aesok ну и еще один пример тогда, конечно с -Os:
Код#in... Oct 8 2010, 10:22     aesok Код#include <avr/io.h>
#include <avr/i... Oct 9 2010, 22:02      777777 Цитата(aesok @ Oct 10 2010, 02:02) Правил... Oct 10 2010, 08:57       demiurg_spb Цитата(777777 @ Oct 10 2010, 12:57) Разум... Oct 10 2010, 12:31        777777 Цитата(demiurg_spb @ Oct 10 2010, 16:31) ... Oct 11 2010, 04:30         GetSmart Цитата(777777 @ Oct 11 2010, 09:30) Стати... Oct 11 2010, 04:41          777777 Цитата(GetSmart @ Oct 11 2010, 08:41) Ста... Oct 11 2010, 07:36         demiurg_spb Цитата(777777 @ Oct 11 2010, 08:30) А для... Oct 11 2010, 08:58          777777 Цитата(demiurg_spb @ Oct 11 2010, 12:58) ... Oct 11 2010, 10:20           demiurg_spb Цитата(777777 @ Oct 11 2010, 14:20) Ну, е... Oct 11 2010, 12:49         halfdoom Цитата(777777 @ Oct 11 2010, 07:30) Стати... Oct 11 2010, 10:52          GetSmart Цитата(halfdoom @ Oct 11 2010, 15:52) Ори... Oct 11 2010, 10:58          777777 Цитата(halfdoom @ Oct 11 2010, 14:52) Ори... Oct 11 2010, 11:10           halfdoom Цитата(777777 @ Oct 11 2010, 14:10) Ключе... Oct 11 2010, 11:18           GetSmart Цитата(777777 @ Oct 11 2010, 16:10) ... П... Oct 11 2010, 11:25    Petka Цитата(777777 @ Oct 8 2010, 14:16) Код#in... Oct 8 2010, 12:28  ReAl Цитата(777777 @ Oct 8 2010, 12:46) Понрав... Oct 8 2010, 12:46  SasaVitebsk Цитата(777777 @ Oct 8 2010, 12:46) Понрав... Oct 8 2010, 23:03 SasaVitebsk В целом я согласен с Сергей Борщ. Особенно зная ег... Oct 7 2010, 18:19 Itch Цитата(SasaVitebsk @ Oct 8 2010, 01:19) Н... Oct 8 2010, 01:01  rezident Цитата(Сергей Борщ @ Oct 8 2010, 19:46) Д... Oct 8 2010, 13:54   Petka Цитата(rezident @ Oct 8 2010, 17:54) Не е... Oct 8 2010, 14:10    rezident Цитата(Petka @ Oct 8 2010, 20:10) На любо... Oct 8 2010, 15:01     MALLOY2 Не зряж в IAR введен Extended keyword __root с пом... Oct 8 2010, 15:21   Oldring Цитата(rezident @ Oct 8 2010, 17:54) Не е... Oct 8 2010, 14:51   MrYuran Цитата(rezident @ Oct 8 2010, 17:54) Не е... Oct 11 2010, 08:10 GetSmart Чтобы прерывания правильно обрабатывали глобальные... Oct 9 2010, 22:17 aesok Цитата(GetSmart @ Oct 10 2010, 02:17) Что... Oct 9 2010, 22:32 777777 Цитата(GetSmart @ Oct 10 2010, 02:17) Что... Oct 10 2010, 10:03  _Pasha Цитата(777777 @ Oct 10 2010, 14:03) компи... Oct 10 2010, 12:07 GetSmart Я уже потерял суть спора. Чё не нравится? В смысле... Oct 11 2010, 07:55
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|