Различные компиляторы C / C ++ имеют #pragma
s для управления оптимизацией.
Например:
CodeWarrior
#pragma optimization_level 0
void func_no_opt()
{
// Some Work - not optimized
}
#pragma optimization_level 3
void func_full_opt()
{
// Some Work - optimized
}
MSVC
#pragma optimize("g", off)
void func_no_opt()
{
// Some Work - not optimized
}
#pragma optimize("g", on)
void func_full_opt()
{
// Some Work - optimized
}
#pragma optimize("", on)
void func_default_opt()
{
// Some Work - default optimizations
}
По причинам, связанным с производительностью, у меня есть пара функций, которые необходимо оптимизировать во всех сборках, включая отладочные сборки, которые в противном случае не оптимизированы.
Есть ли способ в GCC (в частности, 4.1.1) сделать что-то похожее на эти другие компиляторы? К сожалению, GCC 4.4 не поддерживается на моей целевой платформе (проприетарное оборудование), поэтому я не могу использовать атрибут optimize - т.е. __attribute__((optimize(...)))
.
Кроме того, в наборе инструментов для этой целевой платформы есть инструмент для автоматической массовой сборки; поэтому также невозможно просто разделить функции на отдельный файл и изменить параметры оптимизации, поскольку файлы в проекте могут автоматически объединяться для увеличения скорости компиляции и связывания. Мне нужно было бы создать отдельную библиотеку только для этих функций и сделать так, чтобы она была подключена, чтобы сделать метод отщепления. Это может быть немного более болезненным, чем стоило бы - особенно если есть более простой способ сделать это.