реклама на сайте
подробности

 
 
> Что сказать компилятору, чтобы он не убирал переменную, если она не используется
Karl
сообщение Nov 15 2006, 10:49
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 4-02-05
Пользователь №: 2 429



как отменить оптимизацию для определенных переменных? Мне необходимо, чтобы проинициализировалась переменная, которая не используется в последующем коде.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
IgorKossak
сообщение Nov 15 2006, 13:06
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Для локальных переменных память выделяется в стеке.
И если локальная переменная не используется, нет способа заставить компилятор выделять под неё память. Разве что какие-нибудь трюки, которых я не знаю.
Go to the top of the page
 
+Quote Post
makc
сообщение Nov 15 2006, 13:30
Сообщение #3


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(IgorKossak @ Nov 15 2006, 16:06) *
Для локальных переменных память выделяется в стеке.
И если локальная переменная не используется, нет способа заставить компилятор выделять под неё память. Разве что какие-нибудь трюки, которых я не знаю.


Если локальная переменная объявлена как static, то память для нее будет выделяться либо в .data, либо в .bss, но никак ни в стеке. А если ее кроме того сделать volatile, то по идее компилятор должен будет ее сохранить.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 15 2006, 16:03
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(makc @ Nov 15 2006, 15:30) *
Если локальная переменная объявлена как static, то память для нее будет выделяться либо в .data, либо в .bss, но никак ни в стеке. А если ее кроме того сделать volatile, то по идее компилятор должен будет ее сохранить.
А сохранить же ее исходно и не требовалось. Требовалось проинициализировать. С этим справляется volatile и без static


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Karl   Что сказать компилятору, чтобы он не убирал переменную   Nov 15 2006, 10:49
- - _Bill   Цитата(Karl @ Nov 15 2006, 13:49) как отм...   Nov 15 2006, 11:02
- - IgorKossak   Цитата(Karl @ Nov 15 2006, 12:49) как отм...   Nov 15 2006, 11:09
|- - Karl   Цитата(IgorKossak @ Nov 15 2006, 16:09) Ц...   Nov 15 2006, 11:20
|- - Сергей Борщ   Цитата(Karl @ Nov 15 2006, 13:20) Цитата(...   Nov 15 2006, 11:56
- - GetSmart   Для АРМов в IARе я делаю так: #pragma required = ...   Nov 15 2006, 11:43
|- - dxp   Цитата(makc @ Nov 15 2006, 19:30) ...сдел...   Nov 15 2006, 13:41
||- - makc   Цитата(dxp @ Nov 15 2006, 16:41) Цитата(m...   Nov 15 2006, 14:24
||- - dxp   Цитата(makc @ Nov 15 2006, 20:24) Цитата(...   Nov 15 2006, 15:07
|- - Karl   Цитата(Сергей Борщ @ Nov 15 2006, 21:03) ...   Nov 16 2006, 04:00
- - IgorKossak   Тогда что мешает сделать переменную просто глобаль...   Nov 16 2006, 13:34
|- - Karl   Цитата(IgorKossak @ Nov 16 2006, 18:34) Т...   Nov 20 2006, 07:53
- - arttab   а если violates? или я что то путаю?   Nov 17 2006, 02:55
- - makc   Тема раскрыта. Закрываю.   Nov 20 2006, 08:15


Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 08:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016