Considérons le code suivant :
#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;
}
Lorsqu'il est compilé en configuration Release dans VS2013, il affiche "equal". J'ai une bibliothèque qui dépend de la comparaison des adresses de fonctions. Vous pouvez imaginer que cela ne fonctionne pas très bien en configuration Release. Existe-t-il un moyen d'empêcher ce type d'optimisation dans VC++ ? Ou dois-je signaler un bogue ?