Share via


El uso de un nombre de función sin () no genera código

Cuando se usa un nombre de función declarado en el programa sin paréntesis, el compilador no genera código. Esto se produce independientemente de si la función toma o no parámetros, porque el compilador calcula la dirección de la función. Sin embargo, como el operador de llamada de 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 genera ningún resultado de diagnóstico ni siquiera con el nivel de advertencia 4. No se genera ninguna advertencia ni se devuelve código.

El código de ejemplo siguiente se compila (con una advertencia) y se vincula correctamente sin errores, pero no genera código en referencia a funcn( ). Para que esto funcione correctamente, agregue el operador de llamada de 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");
}

Consulte también

Optimizar el código