Как мы все знаем, следующий код будет оптимизирован всеми разумными компиляторами:
const int a = 3;
const int b = 42;
if (a == b)
{
do_something();
}
Если две константы одинаковы, то if
опускается, и функция всегда вызывается, если они разные, весь блок опущен.
Однако могут быть ситуации, когда важно НЕ оптимизировать этот код, так как сама программа может быть изменена до ее запуска. Например. двоичный файл находится во флэш-памяти и может получить доступ к внешней программе, и, конечно же, адреса двух const
фиксированы. (имеет смысл во встроенном).
Я думаю использовать #pragma
, но это не является частью стандарта C.
Другой способ - использовать const volatile
. Гарантируется ли работа над всеми стандартными компиляторами?