При использовании имен функций без скобок () код не создается
При объявлении имени функции в программе без использования скобок компилятор не создает код. Это происходит в независимости от того, принимает функция параметры или нет, потому что компилятор рассчитывает адрес функции; однако из-за того, что оператор вызова функции "()" отсутствует, вызов не происходит. Подобный результат аналогичен следующему примеру:
// compile with /Wall to generate a warning
int a;
a; // no code generated here either
В Visual C++ даже использование предупреждения 4-го уровня не приводит к диагностическим результатам. Предупреждение не выдается, код не создается.
Следующий пример кода компилируется (с предупреждением) и корректно компонуется без ошибок, но при этом для funcn( ) код не создается. Для корректной работы следует добавить оператор вызова функции "()".
#include <stdio.h>
void funcn();
int main() {
funcn; /* missing function call operator;
call will fail. Use funcn() */
}
void funcn() {
printf("\nHello World\n");
}