Sdílet prostřednictvím


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

Pokud je název funkce deklarovaný v programu použit bez závorek, kompilátor nevytváří kód. K tomu dochází bez ohledu na to, zda funkce přebírá parametry, protože kompilátor vypočítá adresu funkce; protože však operátor volání funkce "()" není k dispozici, není provedeno žádné volání. 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 jazyce Visual C++ ani použití úrovně upozornění 4 nevygeneruje žádný diagnostický výstup. Není vydáno žádné upozornění; není vytvořen žádný kód.

Níže uvedený vzorový kód se zkompiluje (s upozorněním) a odkazuje správně bez chyb, ale nevytvoří žádný kód odkazující na funcn( ). Aby to fungovalo správně, přidejte operátor 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é

Optimalizace kódu