Dans le code C++ sur lequel je travaille, j'ai remarqué que de nombreuses méthodes qui retournent HRESULT suivent une pratique de définition de variable locale à S_OK, puis la renvoient à la fin de la méthode sans la modifier.C++ utilisation de HRESULT pour retourner S_OK
HRESULT function()
{
HRESULT hr = S_OK;
// do some stuff
// none of which changes hr
...
return hr;
}
Y at-il des avantages du code ci-dessus? Ou puis-je en toute sécurité factoriser à
void function()
{
// do some stuff
// none of which changes hr
...
}
Le deuxième paragraphe est un peu trompeur. Changer l'interface _always_ nécessite de vérifier les appelants, si vous lancez une exception, mettez 'errno' ou renvoyez' HRESULT (E_OUT_OF_WIDGETS) '. Et si l'ancien code renvoyait toujours 'S_OK', il y a de fortes chances que beaucoup d'appelants ne vérifient pas le code d'erreur. – MSalters