Korzystanie z nazwy funkcji bez () nie tworzy kodu
Gdy nazwa funkcji zadeklarowana w programie jest używana bez nawiasów, kompilator nie generuje kodu. Dzieje się tak niezależnie od tego, czy funkcja przyjmuje parametry, ponieważ kompilator oblicza adres funkcji; jednak, ponieważ operator wywołania funkcji "()" nie jest obecny, nie jest wykonywane wywołanie. Ten wynik jest podobny do następującego:
// compile with /Wall to generate a warning
int a;
a; // no code generated here either
W języku Visual C++, nawet przy użyciu poziomu ostrzeżenia 4 nie generuje żadnych danych wyjściowych diagnostycznych. Nie jest wyświetlane żadne ostrzeżenie; nie jest generowany żaden kod.
Poniższy przykładowy kod kompiluje (z ostrzeżeniem) i łączy się poprawnie bez błędów, ale nie generuje kodu w odwołaniu do funcn( )
. Aby to działało poprawnie, dodaj operator wywołania funkcji "()".
#include <stdio.h>
void funcn();
int main() {
funcn; /* missing function call operator;
call will fail. Use funcn() */
}
void funcn() {
printf("\nHello World\n");
}