Compartilhar via


O uso do nome de função sem () não produz código

Quando um nome de função declarado em seu programa é usado sem parênteses, o compilador não produz código. Isso ocorre independentemente de a função usar ou não parâmetros porque o compilador calcula o endereço da função. No entanto, como o operador de chamada de função "()" não está presente, nenhuma chamada é feita. Este resultado é semelhante ao seguinte:

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

No Visual C++, mesmo o uso do nível de aviso 4 não gera nenhuma saída de diagnóstico. Nenhum aviso é emitido; nenhum código é produzido.

O código de exemplo abaixo compila (com um aviso) e vincula corretamente sem erros, mas não produz nenhum código em referência a funcn( ). Para que isso funcione corretamente, adicione o operador de chamada de função "()".

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

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

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

Confira também

Otimizando seu código