Цитата(haker_fox @ Oct 24 2005, 16:37)
2IgorKossak & ALL! А вообще вот я иногда видел в нете люди жалуются: без оптимизации программа работает, а c оптимизацией нет. Т.к. я в общем-то начинающий (ну не чайник конечно), то хочу задать вопрос уважаемым специалистам: может ли влиять уровень оптимизации на грамотно написанную программу? Т.е. может ли существовать такая программа, которая будет работать только с выключенной или "низкоуровневой" оптимизацией. Прошу прощения за не совсем корректный вопрос, но думаю, что меня поймут.
З.Ы. Все относится к компилятору IAR EWAVR (у меня верся 4.11A)
Теоретически все может быть. И бывает. И бывает даже так, что высокий уровень оптимизации дает даже меньшую вероятность ошибочной компиляции. Я с таким случаем сталкивался (правда там был MSP430, но это в данном случае ничего не меняет) - работающий кусок кода у меня, не работал у коллеги, стали разбираться, выяснилось, что у меня уровень оптимизации стоял на максимуме, а у него где-то на уровне 6. И проявлялся глюк. Причина этого, имхо, в том, что большинство людей стараются выжать из инструмента максимум и работают на максимальных уровнях оптимизации - поэтому и максимальное количество глюков отлавливается именно на этом уровне. А уровень 6 мало кому интересен, просто им редко пользуются и грабли, соответствующие ему обнаруживаются реже.
Всегда работал и работаю на максимальном уровне оптимизации - считаю, компилятор должен вносить максимальный вклад в работу. Баги бывали, конечно, но их количество не таково, чтобы мешать жить. По крайней мере у IAR. Т.ч. бояться не надо, при каких-нито проблемах надо в первую очередь смотреть в листинг на кодогенерацию - там все видно и сразу понятно, кто виноват. И вообще на первых порах, пока только знакомитесь с инструментом (даже если уже не новичок), надо почаще заглядывать в листинг - так лучше поймете, как и что реализуется компилятором, узнаете его "повадки", что позволить писать на С/С++ эффективный код.