Sdílet prostřednictvím


Použití názvu funkce bez závorek () nevygeneruje žádný kód

Při použití názvu funkce deklarované v programu bez závorek nevytváří kód kompilátoru.K této situaci dochází bez ohledu na to, zda funkci přebírá parametry, protože kompilátor vypočítá adresa funkce; ale protože operátor volání funkce "()" není k dispozici žádná volání provedeno.Tento výsledek je podobný následujícímu:

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

V aplikaci Visual C++ ani pomocí úroveň pro upozornění 4 generuje žádné diagnostické výstup.Není vydáno žádné varování; je vyráběn žádný kód.

Následující ukázkový kód zkompiluje (s upozorněním) a odkazy správně bez chyby ale dává žádný kód reference na funcn( ).Tento postup fungovat správně Přidání operátora volání funkce "()".

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

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

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

Viz také

Koncepty

Optimalizace kódu