Partager via


L'utilisation d'un nom de fonction sans () ne génère pas de code

Lorsqu’un nom de fonction déclaré dans votre programme est utilisé sans parenthèses, le compilateur ne produit pas de code. Cela se produit, que la fonction prenne ou non des paramètres, car le compilateur calcule l’adresse de la fonction ; toutefois, étant donné que l’opérateur d’appel de fonction « () » n’est pas présent, aucun appel n’est effectué. Ce résultat est similaire à ce qui suit :

// compile with /Wall to generate a warning
int a;
a;      // no code generated here either

Dans Visual C++, même à l’aide du niveau d’avertissement 4, aucune sortie de diagnostic n’est générée. Aucun avertissement n’est émis ; aucun code n’est généré.

L’exemple de code ci-dessous compile (avec un avertissement) et lie correctement sans erreurs, mais ne produit aucun code en référence à funcn( ). Pour que cela fonctionne correctement, ajoutez l’opérateur d’appel de fonction « () ».

#include <stdio.h>
void funcn();

int main() {
   funcn;      /* missing function call operator;
                  call will fail.  Use funcn() */
   }

void funcn() {
   printf("\nHello World\n");
}

Voir aussi

Optimisation du code