La utilización de un nombre de función sin () no genera código
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");
}