Compartir a través de


La utilización de un nombre de función sin () no genera código

Actualización: noviembre 2007

Cuando se utiliza sin paréntesis un nombre de función declarado en el programa, el compilador no produce código. Esto ocurrirá independientemente de si la función utiliza o no parámetros, ya que el compilador calcula la dirección de la función; sin embargo, como el operador de llamada a la función "()" no está presente, no se realiza ninguna llamada. El resultado es similar al siguiente:

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

En Visual C++, no se generan resultados de diagnóstico ni al utilizar el nivel 4 de advertencia. No se emite ninguna advertencia y no se produce código.

El código de ejemplo siguiente se compila (con una advertencia) y vincula correctamente sin error, pero no produce código relacionado con funcn( ). Para que esto funcione correctamente, debe agregar el operador de llamada a función "()".

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

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

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

Vea también

Referencia

Optimizar el código