Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: WinAVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
EugeNNe
Можно ли как то указать компилятору что данный участок кода не нужно оптимизировать?
aesok
Цитата(BigBolt @ Jul 3 2008, 10:32) *
Можно ли как то указать компилятору что данный участок кода не нужно оптимизировать?


Нет.

Анатолий.
EugeNNe
Жаль. Придётся на асме отдельный кусок лепить...
aesok
Цитата(BigBolt @ Jul 3 2008, 10:58) *
Жаль. Придётся на асме отдельный кусок лепить...


А может вначале расказать в чем проблемма, может Вам подскажут более простое решение?

Анатолий.
Qwertty
Цитата(BigBolt @ Jul 3 2008, 10:32) *
Можно ли как то указать компилятору что данный участок кода не нужно оптимизировать?

Выделить этот участок в отдельный файл. Ну и далее - O0...
EugeNNe
Цитата(aesok @ Jul 3 2008, 11:01) *
А может вначале расказать в чем проблемма, может Вам подскажут более простое решение?
Анатолий.



При оптимизации -0s функция компилится не так как бы этого хотелось. Переменная которая изменяется в прерывании в данной функции не обновляется даже с использованием volatile. Если компилить при опции -О0 то всё нормально...
Сергей Борщ
Цитата(BigBolt @ Jul 3 2008, 11:41) *
Переменная которая изменяется в прерывании в данной функции не обновляется даже с использованием volatile.
Раз код настолько секретный, что даже кусочек его показать нельзя, рискну телепатировать, что переменная - указатель. И объявлена как-то вроде volatile char * Variable. Угадал?
EugeNNe
Цитата(Сергей Борщ @ Jul 3 2008, 12:49) *
Раз код настолько секретный, что даже кусочек его показать нельзя, рискну телепатировать, что переменная - указатель. И объявлена как-то вроде volatile char * Variable. Угадал?


Да нет не секретный, уже всё переделал. Структура, доступ к которой происходит через указатель. В цикле проверки обращениее к ней происходит один раз, при входе в цикл ожидания. А потом проверяется одно и тоже значение. Естественно сообщение о том что произошло некое событие не фиксируется.
Сергей Борщ
Цитата(BigBolt @ Jul 3 2008, 12:04) *
Да нет не секретный, уже всё переделал.
Ну так покажите. На словах тяжело воспринимается. У вас скорее всего как volatile был объявлен сам указатель, а не то, на что он указывет. Или наоборот. Отсюда и проблемы.
777777
Цитата(BigBolt @ Jul 3 2008, 13:04) *
Да нет не секретный, уже всё переделал. Структура, доступ к которой происходит через указатель. В цикле проверки обращениее к ней происходит один раз, при входе в цикл ожидания. А потом проверяется одно и тоже значение. Естественно сообщение о том что произошло некое событие не фиксируется.


Прочитав предложение #3 я предположил, что где-то не хватает volatile. Оказалось, и в самом деле.
r301
Цитата(Сергей Борщ @ Jul 3 2008, 14:07) *
Ну так покажите. На словах тяжело воспринимается. У вас скорее всего как volatile был объявлен сам указатель, а не то, на что он указывет. Или наоборот. Отсюда и проблемы.


bb-offtopic.gif
может покажите как правильно объявлять указатель на volatile, а как указатель с квалификатором volatile. Недавно столкнулся с этим вопросом, ничего толкового не нашел ((
bb-offtopic.gif
aesok
Цитата(r301 @ Jul 17 2008, 19:50) *
bb-offtopic.gif
может покажите как правильно объявлять указатель на volatile, а как указатель с квалификатором volatile. Недавно столкнулся с этим вопросом, ничего толкового не нашел ((
bb-offtopic.gif


Для volatile аналогично.

Цитата
Код
const Pointers

The keyword const for pointers can appear before the type, after the type, or in both places. The following are legal declarations:

const int * ptr1;       /* A pointer to a constant integer:
                             the value pointed to cannot be changed  */
int * const ptr2;       /* A constant pointer to integer:
                             the integer can be changed, but ptr2
                             cannot point to anything else           */
const int * const ptr3; /* A constant pointer to a constant integer:
                             neither the value pointed to
                             nor the pointer itself can be changed   */

Declaring an object to be const means that the this pointer is a pointer to a const object. A const this pointer can by used only with const member functions.


Анатолий.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.