Le titre de la question peut-être un peu étrange, mais le truc, c'est que, autant que je sache, il n'y a rien qui parle contre la queue d'appel de l'optimisation à tout. Cependant, lors de la navigation sur des projets open source, je suis déjà tombé sur quelques fonctions qui cherchent activement à arrêter le compilateur de faire une queue appel d'optimisation, par exemple la mise en œuvre de CFRunLoopRef qui est pleine de ces hacks. Par exemple:
static void __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__() __attribute__((noinline));
static void __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__(CFRunLoopObserverCallBack func, CFRunLoopObserverRef observer, CFRunLoopActivity activity, void *info) {
if (func) {
func(observer, activity, info);
}
getpid(); // thwart tail-call optimization
}
J'aimerais savoir pourquoi c'est apparemment si important, et sont en tout cas moi, en tant que normale développeur doit garder cela à l'esprit? Par exemple. sont là les pièges les plus courants avec la queue d'appel d'optimisation?