【发布时间】:2012-03-07 15:13:07
【问题描述】:
我需要澄清 C 中的以下符号:
我有一个结构,在该结构中我有以下字段:
bool (* process_builtin)(struct esh_command *);
我在这里很困惑..所以这是一个布尔字段..process_builtin 到底是什么?我已经定义了一个结构esh_command,但我不知道它在这个领域的作用。有人可以解释一下整个事情的含义吗?
【问题讨论】:
我需要澄清 C 中的以下符号:
我有一个结构,在该结构中我有以下字段:
bool (* process_builtin)(struct esh_command *);
我在这里很困惑..所以这是一个布尔字段..process_builtin 到底是什么?我已经定义了一个结构esh_command,但我不知道它在这个领域的作用。有人可以解释一下整个事情的含义吗?
【问题讨论】:
这不是一个布尔字段,这是一个pointer to a function 接受一个struct esh_command* 并返回一个bool;该字段名为process_builtin。
你也可以写:
typedef bool (* process_builtin_t)(struct esh_command *);
在这种情况下,process_builtin_t 将是一种类型,在这种情况下,您可以将 struct 成员的定义编写为:
process_builtin_t process_builtin;
【讨论】:
bool process_builtins(struct esh_command *command) 是正确的定义标题?
name_of_struct->process_builtin?那么process_builtin 函数在->process_builtin 成员中存储真/假?
process_builtin 不是布尔值;它是一个可以调用的函数指针。 bool foo = name_of_struct.process_builtin(some_esh_cmd);
char *(*p)(char const *, int) = strchr; 然后,您可以根据需要重置p = strrchr,因为这些函数具有相同的原型。在任何好的 C 书籍中查找函数指针。
process_builtin 是一个函数指针。它指向的函数接受esh_command* 作为参数并返回bool。
【讨论】:
struct esh_command*(不是esh_command*),因为esh_command 没有在C 中命名一个没有struct 关键字的类型。
这是一个指向函数的指针,它将指向 struct esh_command 的指针作为参数并返回一个布尔值。
【讨论】: