Перейти к содержанию
    

Можно ли как то указать компилятору что данный участок кода не нужно оптимизировать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно ли как то указать компилятору что данный участок кода не нужно оптимизировать?

 

Нет.

 

Анатолий.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Жаль. Придётся на асме отдельный кусок лепить...

 

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

 

Анатолий.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно ли как то указать компилятору что данный участок кода не нужно оптимизировать?

Выделить этот участок в отдельный файл. Ну и далее - O0...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Анатолий.

 

 

При оптимизации -0s функция компилится не так как бы этого хотелось. Переменная которая изменяется в прерывании в данной функции не обновляется даже с использованием volatile. Если компилить при опции -О0 то всё нормально...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Переменная которая изменяется в прерывании в данной функции не обновляется даже с использованием volatile.
Раз код настолько секретный, что даже кусочек его показать нельзя, рискну телепатировать, что переменная - указатель. И объявлена как-то вроде volatile char * Variable. Угадал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Раз код настолько секретный, что даже кусочек его показать нельзя, рискну телепатировать, что переменная - указатель. И объявлена как-то вроде volatile char * Variable. Угадал?

 

Да нет не секретный, уже всё переделал. Структура, доступ к которой происходит через указатель. В цикле проверки обращениее к ней происходит один раз, при входе в цикл ожидания. А потом проверяется одно и тоже значение. Естественно сообщение о том что произошло некое событие не фиксируется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да нет не секретный, уже всё переделал.
Ну так покажите. На словах тяжело воспринимается. У вас скорее всего как volatile был объявлен сам указатель, а не то, на что он указывет. Или наоборот. Отсюда и проблемы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да нет не секретный, уже всё переделал. Структура, доступ к которой происходит через указатель. В цикле проверки обращениее к ней происходит один раз, при входе в цикл ожидания. А потом проверяется одно и тоже значение. Естественно сообщение о том что произошло некое событие не фиксируется.

 

Прочитав предложение #3 я предположил, что где-то не хватает volatile. Оказалось, и в самом деле.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну так покажите. На словах тяжело воспринимается. У вас скорее всего как volatile был объявлен сам указатель, а не то, на что он указывет. Или наоборот. Отсюда и проблемы.

 

:bb-offtopic:

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

:bb-offtopic:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:bb-offtopic:

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

:bb-offtopic:

 

Для 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.

 

Анатолий.

Изменено пользователем aesok

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...