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;
void terminate_pipe(int);
это не вызов функции, это прямое объявление функции.- В
new_Sigiterm.sa_handler
sa_handler
это указатель на функцию