Udostępnij za pośrednictwem


Korzystanie z nazwy funkcji bez () nie tworzy kodu

Gdy używana jest nazwa funkcję zadeklarowane w programie bez nawiasów, kompilator nie produkuje kodu.Dzieje się tak niezależnie od tego, czy funkcja pobiera parametry, ponieważ kompilator oblicza adresu funkcji; Jednakże ponieważ nie występuje operator wywołanie funkcji "()", nie rozmowy.Wynik ten jest podobny do następującego:

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

W programie Visual C++ nawet przy użyciu poziom ostrzeżeń 4 generuje nie diagnostyczne dane wyjściowe.Ostrzeżenie nie jest generowane; żaden kod nie jest produkowany.

Poniższy kod przykładowy kompiluje (z ostrzeżeniem) i łączy poprawnie bez błędów, ale daje żadnego kodu w odniesieniu do funcn( ).Aby to działało poprawnie należy dodać operator wywołanie funkcji "()".

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

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

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

Zobacz też

Koncepcje

Optymalizacja kodu