← All posts tagged CPP

CPP

Код собирается в одном коньпиляторе и не собирается в другом. Поменял местами определения функций — собрался.
Как 10 лет назад с VC6 . Стабильность — чо. :)

Вобщем, есть у нас библиотека она линкуется с либой libACE.a . Так вот она на днях перестала у меня линковаться. Причём ругается на существующий символ. Ругаться стало, предположительно, после обновления glibc в процессе обновления ghc до 7.6.3 (из debian sid-а вроде).
Я взял теже исходники и libACE и собрал под виртуалкой на debian stable всё собралось, т.е. я каким-то образом смог поставить раком систему, что она глючит при сборке. Версия gcc и ld на обеих системах одинаковая. Порядок аргументов при ликновке идентичен.
Вопрос в том, что можно сделать чтоб оно стало снова собираться?

Есть некая функция поведение, которой может изменяться булевым флагом. Флаг этот выставляется исключительно в компаил тайм. Собственно хочется сделать так, чтоб в рантайме этой проверки не было. Придумалось 2 варианта:
void* foo<bool b>(void* )
{
//...
if(b) do();
//...
}

и 2й со специализацией do для случая true (функция) и false (пустая функция)

Так вот, второй вариант точно не будет содержать условного перехода в сгенерённом компилером выводе, но он более сложный и раздрыстаный; первый же проще но не известно в общем случае соптимизирует ли компилятор в константу.
Может кто знает как такая оптимизация называется правильно на ангельском или выполняется ли она gcc/MSVC?