Простой вопрос: когда компилятор сталкивается с вызовом, скажем, pow(), с двумя константами (т.е. значениями из макросов), оптимизирован ли он путем оценки его во время компиляции, или он все еще рассчитан во время выполнения?C++: pow() оптимизация с двумя константами
Пример:
#define V_BITMEM_GRID 3
#define V_BITMEM_TOTAL pow(V_BITMEM_GRID,2)
Спасибо!
EDIT Если нет, можно ли вычислить квадрат/куб макроса в качестве другого макроса (например, я пытаюсь выполнить выше) во время компиляции?
Это будет зависящим от компилятора. Вы можете взглянуть на код ассемблера, который генерирует ваш компилятор. –
Template meta programming выполнит эту работу, если ваш оптимизатор вашего компилятора не оценит pow во время выполнения –
@DavidHeffernan - шаблон мета-программирования? Я должен буду изучить это. Эти макросы используются в нескольких циклах, и вызов pow() будет довольно напряженным. – Qix