C++: операторы const static DEBUG и if, каковы фактические накладные расходы во время выполнения?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 C++: операторы const static DEBUG и if, каковы фактические накладные расходы во время выполнения?

Сообщение Anonymous »

В школе меня часто учили, что операторы препроцессора могут легко выйти из строя, поскольку строки, которые вы определяете, например:

Код: Выделить всё

#define PI 3.1415926
заменяются везде в вашем коде, что приводит к странным заменам, когда имя переменной содержит строку PI.

Поэтому при отладке я избегаю следующего подхода:

Код: Выделить всё

#define _DEBUG
...
#ifdef _DEBUG
// debug code
#endif
...
но подумал, что это будет «безопаснее» использовать:

Код: Выделить всё

const static bool DEBUG = true
int main()
{
...
if(DEBUG){ /* debug code*/ }
...
}
Это работает хорошо, но мне интересно, какие накладные расходы при этом подходе по сравнению с подходом с использованием операторов препроцессора возникают во время выполнения? При использовании препроцессора все происходит до компиляции, поэтому не следует ожидать никаких накладных расходов во время выполнения.

Я знаю, что накладные расходы на простой оператор if в значительной степени незначительны, но это не справедливо, когда он помещается глубоко в какой-либо вложенный оператор. циклы, которые выполняются большое количество раз (маленькие вещи складываются в большие).

Признает ли компилятор тот факт, что DEBUG является const static< /code> и жестко закодировать это в исполняемом файле, уже включая или отключая код отладки во время компиляции? Что заставляет меня подозревать это, так это то, что на днях, когда я работал над каким-то несвязанным кодом, компилятор предупредил меня о том, что некоторая часть кода устарела, потому что окружающий ее оператор if никогда не станет истинным (если я правильно помню) ).

Подробнее здесь: https://stackoverflow.com/questions/100 ... on-time-ov
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Каковы накладные расходы на вызов метода в цикле?
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Каковы накладные расходы на создание много недолговечных объектов?
    Anonymous » » в форуме C#
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между const int *, const int * const и int * const?
    Anonymous » » в форуме C++
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Возникают ли накладные расходы при загрузке сборок вручную во время выполнения?
    Anonymous » » в форуме C#
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Накладные расходы в неиспользуемом коде
    Anonymous » » в форуме C++
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»