这是Linux内核中的软中断。如何理解void (*action)(struct softirq_action *);
的定义?
struct softirq_action
{
void (*action)(struct softirq_action *);
};
答案 0 :(得分:3)
从最左边的标识符开始,然后记住以下规则,继续前进:
T *a[N]; // a is an array of pointer to T
T (*a)[N]; // a is a pointer to an array of T
T *f(); // f is a function returning a pointer to T
T (*f)(); // f is a pointer to a function returning T
所以:
action -- action
*action -- is a pointer to
(*action)( ) -- a function taking
(*action)( ) -- unnamed parameter
(*action)( *) -- is a pointer to
(*action)(struct softirq_action *) -- struct softirq_action
void (*action)(struct softirq_action *); -- and returning void
答案 1 :(得分:0)
将动作声明为函数的指针(以指向结构softirq_action的指针作为唯一参数)返回void
答案 2 :(得分:0)
正如答案所说:这是一个声明而不是定义。 怎么理解呢?您可以按照以下步骤操作: 1-以标识符开头,后跟星号“ action”,因为它以星号开头,因此是指针 2-如果用括号括起来,则它是函数的指针。 3-读取指针名称之前的项目,这是返回类型 4-读取指针名称后的项目,这是函数参数。
所以总结一下: action是指向函数的指针,该函数返回void并将结构指针作为参数。
答案 3 :(得分:0)
这是一个function pointer变量(称为动作),可以指向带有struct softirq_action *
参数和返回值void
的任何函数。
例如,如果您具有此功能:
void IRQ_handler(struct softirq_action *);
然后您可以将其地址提供给指针,例如
action = &IRQ_handler;
并称呼它
action(action_struct);
使用函数指针,您可以在运行时确定要调用的函数。