C - Вызов функции, объявленной с параметрами без параметров?

Я пытаюсь понять код, который имеет следующие строки:

void terminate_pipe(int);
code code code...
struct sigaction new_Sigiterm;
new_Sigiterm.sa_handler = terminate_pipe;

Мой вопрос:

  • В чем смысл вызова такой функции? Это собирается просто поставить NULL как параметр?

  • Пусто, так new_Sigiterm.sa_handler будет NULL не важно что?

Благодарю.

3 ответа

Решение

new_Sigiterm.sa_handler скорее всего, указатель, который указывает на функцию. Запустив

new_Sigiterm.sa_handler = terminate_pipe;

Это похоже на высказывание

new_Sigiterm.sa_handler = &terminate_pipe;

(Как в указателях). Это не запуск функции, это просто создание указателя, который указывает на функцию, если вы "запустите" указатель, указанная функция запустится.

Вот как объявить указатель на функцию:

void function(int x);

int main()
{
    //Pointer to function
    void (*foo) (int);

    //Point it to our function
    foo = function;

    //Run our pointed function
    foo(5);
}

Подробнее о функциональных указателях

Код, подобный этому назначению, устанавливает обработчик (иногда называемый указателем на функцию): в основном, адрес функции, которая должна быть запущена в данный момент времени.

Синтаксис этого в C состоит в том, чтобы назвать функцию, но не ставить () в конце. Это возвращает адрес функции.

new_Sigiterm.sa_handler = terminate_pipe;
  1. void terminate_pipe(int); это не вызов функции, это прямое объявление функции.
  2. В new_Sigiterm.sa_handlersa_handler это указатель на функцию
Другие вопросы по тегам