À l'aide de UNREFERENCED_PARAMETER macro

Je suis en utilisant \W4 niveau d'avertissement sur Visual Studio et je suis en train d'écrire un programme Windows.

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

Tous ces paramètres ne sont pas utilisés dans mon application, j'ai donc obtenir des avertissements lors de la compilation.

Je sais qu'il y a deux façons de traiter ce:

  1. Commentant les paramètres HINSTANCE /*hInstance*/ ...
  2. À l'aide de la UNREFERENCED_PARAMETER macro

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
      UNREFERENCED_PARAMETER(hInstance);
      UNREFERENCED_PARAMETER(hPrevInstance);
      UNREFERENCED_PARAMETER(lpCmdLine);
      UNREFERENCED_PARAMETER(nCmdShow);

Lequel est le bon? Lequel est le plus sûr à utiliser? Existe-il des problèmes avec l'aide de la macro?

Les deux sont droits, les deux sont un coffre-fort. C'est une question de goût. Que préférez-vous?
est-il une diminution de la vitesse lors de l'utilisation de la macro?
Non, Pas lorsque l'optimisation est activée (la libération). UNREFERENCED_PARAMETER(p) macro est définie comme p = p; Ce code éviter l'avertissement mais est rejetée avec optimisation de base. Dans les versions Debug, je ne suis pas sûr si cette macro va générer un code. Mais vous serez pas à vous soucier de la performance en debug.
Ainsi, par exemple, si j'ai "Optimiser la Vitesse (/O2)" je ne devrais pas avoir de problème?
Non, absolument pas.

OriginalL'auteur LppEdd | 2013-06-19