Рассмотрим следующий код:
#include <iostream>
struct A {};
struct B {};
int func1(A *a, B *b, int c, double *d) {
int tmp = 0;
tmp = tmp;
return 1;
}
int func2(A *a, B *b, int c, double *d) {
return 1;
}
int main(int argc, char* argv[]) {
if (func1 == func2) {
std::cout << "equal" << std::endl;
} else {
std::cout << "not equal" << std::endl;
}
return 0;
}
При компиляции в конфигурации Release в VS2013 он выводит "equal". У меня есть библиотека, которая зависит от сравнения адресов функций. Вы можете себе представить, что в релизе это не работает. Есть ли способ предотвратить такую оптимизацию в VС++? Или я должен указать ошибку?