Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Извините, но это все фигня 06.02.02 10:10 Число просмотров: 899
Автор: leo <Леонид Юрьев> Статус: Elderman
|
1) RTFM - #pragma допустима только вне функции, вне декларации, вне шаблона;
2) RTFM - При глобальной "Whole Program Optimization" компилятор все равно убьет все функции без сторонних эффектов, результат которых не используеться;
3) RTFM - чтобы гарантированно выключить оптимизацию в шаблоне, ее нужно выключить везде где этот шаблон используется;
Оптимизацию выключать вообще не выгодно и не удобно. Лучше сделать несколько внешних (недоступных) оптимзатору функций, которые будут выполнять чтение или "делать вид" использования результата. Пока я так и сделал: volatile-чтения, результат которых не используется, сейчас передается параметром в недоступную оптимизатору dummy-функцию .
Это решение не нравится прежде всего тем, что вызов внешней функции(равно как и __asm-вставка) заставляет компилятор перезагружать значение регистров их памяти, и в итоге увеличивае размер кода в ~5 раз.
Хотелось бы перевести обсуждение в другое "русло", не как выключить оптимизацию, а как указать оптимизатору что чтение из памяти имеет сторонний эффект.
|
|
|